[wesnoth-commits] [wesnoth/wesnoth] 3d894f: GUI2: made widget initialization process more secu...

GitHub noreply at github.com
Fri Jun 8 08:18:08 UTC 2018


  Branch: refs/heads/master
  Home:   https://github.com/wesnoth/wesnoth
  Commit: 3d894faf11bba1b214914a7af565f4c712e29a5a
      https://github.com/wesnoth/wesnoth/commit/3d894faf11bba1b214914a7af565f4c712e29a5a
  Author: Charles Dang <exodia339 at gmail.com>
  Date:   2018-06-08 (Fri, 08 Jun 2018)

  Changed paths:
    M src/gui/core/window_builder.cpp
    M src/gui/core/window_builder.hpp
    M src/gui/core/window_builder/instance.cpp
    M src/gui/core/window_builder/instance.hpp
    M src/gui/dialogs/drop_down_menu.cpp
    M src/gui/dialogs/preferences_dialog.cpp
    M src/gui/widgets/addon_list.cpp
    M src/gui/widgets/addon_list.hpp
    M src/gui/widgets/button.cpp
    M src/gui/widgets/button.hpp
    M src/gui/widgets/chatbox.cpp
    M src/gui/widgets/chatbox.hpp
    M src/gui/widgets/container_base.cpp
    M src/gui/widgets/container_base.hpp
    M src/gui/widgets/drawing.cpp
    M src/gui/widgets/drawing.hpp
    M src/gui/widgets/generator.cpp
    M src/gui/widgets/generator.hpp
    M src/gui/widgets/generator_private.hpp
    M src/gui/widgets/grid.cpp
    M src/gui/widgets/grid.hpp
    M src/gui/widgets/horizontal_scrollbar.cpp
    M src/gui/widgets/horizontal_scrollbar.hpp
    M src/gui/widgets/image.cpp
    M src/gui/widgets/image.hpp
    M src/gui/widgets/label.cpp
    M src/gui/widgets/label.hpp
    M src/gui/widgets/listbox.cpp
    M src/gui/widgets/listbox.hpp
    M src/gui/widgets/matrix.cpp
    M src/gui/widgets/matrix.hpp
    M src/gui/widgets/menu_button.cpp
    M src/gui/widgets/menu_button.hpp
    M src/gui/widgets/minimap.cpp
    M src/gui/widgets/minimap.hpp
    M src/gui/widgets/multi_page.cpp
    M src/gui/widgets/multi_page.hpp
    M src/gui/widgets/multimenu_button.cpp
    M src/gui/widgets/multimenu_button.hpp
    M src/gui/widgets/pane.cpp
    M src/gui/widgets/pane.hpp
    M src/gui/widgets/panel.cpp
    M src/gui/widgets/panel.hpp
    M src/gui/widgets/password_box.cpp
    M src/gui/widgets/password_box.hpp
    M src/gui/widgets/progress_bar.cpp
    M src/gui/widgets/progress_bar.hpp
    M src/gui/widgets/repeating_button.cpp
    M src/gui/widgets/repeating_button.hpp
    M src/gui/widgets/scroll_label.cpp
    M src/gui/widgets/scroll_label.hpp
    M src/gui/widgets/scrollbar_container.cpp
    M src/gui/widgets/scrollbar_container.hpp
    M src/gui/widgets/scrollbar_container_private.hpp
    M src/gui/widgets/scrollbar_panel.cpp
    M src/gui/widgets/scrollbar_panel.hpp
    M src/gui/widgets/size_lock.cpp
    M src/gui/widgets/size_lock.hpp
    M src/gui/widgets/slider.cpp
    M src/gui/widgets/slider.hpp
    M src/gui/widgets/spacer.cpp
    M src/gui/widgets/spacer.hpp
    M src/gui/widgets/stacked_widget.cpp
    M src/gui/widgets/stacked_widget.hpp
    M src/gui/widgets/styled_widget.cpp
    M src/gui/widgets/styled_widget.hpp
    M src/gui/widgets/text_box.cpp
    M src/gui/widgets/text_box.hpp
    M src/gui/widgets/toggle_button.cpp
    M src/gui/widgets/toggle_button.hpp
    M src/gui/widgets/toggle_panel.cpp
    M src/gui/widgets/toggle_panel.hpp
    M src/gui/widgets/tree_view.cpp
    M src/gui/widgets/tree_view.hpp
    M src/gui/widgets/tree_view_node.cpp
    M src/gui/widgets/tree_view_node.hpp
    M src/gui/widgets/unit_preview_pane.cpp
    M src/gui/widgets/unit_preview_pane.hpp
    M src/gui/widgets/vertical_scrollbar.cpp
    M src/gui/widgets/vertical_scrollbar.hpp
    M src/gui/widgets/viewport.cpp
    M src/gui/widgets/viewport.hpp
    M src/gui/widgets/widget.hpp
    M src/gui/widgets/widget_helpers.cpp
    M src/gui/widgets/widget_helpers.hpp
    M src/gui/widgets/window.cpp

  Log Message:
  -----------
  GUI2: made widget initialization process more secure against memory leaks

This commit is the followup to a similar one I did regarding window initialization. Instead
of widgets being created on the heap and not being managed by a smart pointer until they're
added to a grid, they are now always managed by a shared_ptr. To that end, this commit covers
bunch of things:

* builder_widget::build (both overloads) and all its overrides (which have now been marked
  as such) now return shared_ptr<widget>.
* The builder_grid::build() override now returns the same instead of grid* since you can't
  use covariant return types with smart pointers.
* The two implementation build helpers in builder_grid have been combined with an optional
  replacement map as the second parameter. Uses of the version that took a grid pointer could
  be easily converted to pass a reference instead.
* The pane, matrix, and viewport build() functions were removed in favor of making the ctor
  public. In case there was a deprecated ctor, that was removed.
* The viewport now keeps a widget shared_ptr instead of a reference that was then deleted
  by address-of. This was both better design and necessary to fix a crash.
* build_single_widget_instance_helper and build_single_widget_instance were renamed to
  build_single_widget and build_single_widget_and_cast_to to better represent their roles
  and to indicate the latter was more a convenience extension for the latter than the other
  way around.


  Commit: 52f7fcf5cc3d7446904df90381f467d15d4f5aad
      https://github.com/wesnoth/wesnoth/commit/52f7fcf5cc3d7446904df90381f467d15d4f5aad
  Author: Charles Dang <exodia339 at gmail.com>
  Date:   2018-06-08 (Fri, 08 Jun 2018)

  Changed paths:
    M src/gui/core/register_widget.hpp
    M src/gui/widgets/addon_list.cpp
    M src/gui/widgets/addon_list.hpp
    M src/gui/widgets/button.cpp
    M src/gui/widgets/button.hpp
    M src/gui/widgets/chatbox.cpp
    M src/gui/widgets/chatbox.hpp
    M src/gui/widgets/drawing.cpp
    M src/gui/widgets/drawing.hpp
    M src/gui/widgets/horizontal_scrollbar.cpp
    M src/gui/widgets/horizontal_scrollbar.hpp
    M src/gui/widgets/image.cpp
    M src/gui/widgets/image.hpp
    M src/gui/widgets/label.cpp
    M src/gui/widgets/label.hpp
    M src/gui/widgets/list.hpp
    M src/gui/widgets/listbox.cpp
    M src/gui/widgets/listbox.hpp
    M src/gui/widgets/matrix.hpp
    M src/gui/widgets/menu_button.cpp
    M src/gui/widgets/menu_button.hpp
    M src/gui/widgets/minimap.cpp
    M src/gui/widgets/minimap.hpp
    M src/gui/widgets/multi_page.cpp
    M src/gui/widgets/multi_page.hpp
    M src/gui/widgets/multimenu_button.cpp
    M src/gui/widgets/multimenu_button.hpp
    M src/gui/widgets/panel.cpp
    M src/gui/widgets/panel.hpp
    M src/gui/widgets/password_box.cpp
    M src/gui/widgets/password_box.hpp
    M src/gui/widgets/progress_bar.cpp
    M src/gui/widgets/progress_bar.hpp
    M src/gui/widgets/repeating_button.cpp
    M src/gui/widgets/repeating_button.hpp
    M src/gui/widgets/scroll_label.cpp
    M src/gui/widgets/scroll_label.hpp
    M src/gui/widgets/scrollbar_container.cpp
    M src/gui/widgets/scrollbar_container.hpp
    M src/gui/widgets/scrollbar_panel.cpp
    M src/gui/widgets/scrollbar_panel.hpp
    M src/gui/widgets/size_lock.cpp
    M src/gui/widgets/size_lock.hpp
    M src/gui/widgets/slider.cpp
    M src/gui/widgets/slider.hpp
    M src/gui/widgets/spacer.cpp
    M src/gui/widgets/spacer.hpp
    M src/gui/widgets/stacked_widget.cpp
    M src/gui/widgets/stacked_widget.hpp
    M src/gui/widgets/styled_widget.hpp
    M src/gui/widgets/text_box.cpp
    M src/gui/widgets/text_box.hpp
    M src/gui/widgets/toggle_button.cpp
    M src/gui/widgets/toggle_button.hpp
    M src/gui/widgets/toggle_panel.cpp
    M src/gui/widgets/toggle_panel.hpp
    M src/gui/widgets/tree_view.cpp
    M src/gui/widgets/tree_view.hpp
    M src/gui/widgets/unit_preview_pane.cpp
    M src/gui/widgets/unit_preview_pane.hpp
    M src/gui/widgets/vertical_scrollbar.cpp
    M src/gui/widgets/vertical_scrollbar.hpp
    M src/gui/widgets/window.cpp
    M src/gui/widgets/window.hpp

  Log Message:
  -----------
  GUI2: added a public static type getter to all widgets implementing get_control_type

Fixes #2400. See comment in styled_widget.hpp for details.


  Commit: 34195ae6548131ef00aa894b4f82c7312fa140da
      https://github.com/wesnoth/wesnoth/commit/34195ae6548131ef00aa894b4f82c7312fa140da
  Author: Charles Dang <exodia339 at gmail.com>
  Date:   2018-06-08 (Fri, 08 Jun 2018)

  Changed paths:
    M src/gui/core/window_builder.hpp
    M src/gui/dialogs/drop_down_menu.cpp
    M src/gui/dialogs/preferences_dialog.cpp
    M src/gui/widgets/scrollbar_container.cpp

  Log Message:
  -----------
  GUI2: removed now-redundant type parameter from build_single_widget_and_cast_to


  Commit: 58d3cad315817d55e18aba6c79f850ed016d2ebb
      https://github.com/wesnoth/wesnoth/commit/58d3cad315817d55e18aba6c79f850ed016d2ebb
  Author: Charles Dang <exodia339 at gmail.com>
  Date:   2018-06-08 (Fri, 08 Jun 2018)

  Changed paths:
    M src/gui/core/register_widget.hpp
    M src/gui/core/window_builder.cpp
    M src/gui/core/window_builder.hpp
    M src/gui/core/window_builder/instance.cpp
    M src/gui/core/window_builder/instance.hpp
    M src/gui/dialogs/drop_down_menu.cpp
    M src/gui/dialogs/preferences_dialog.cpp
    M src/gui/widgets/addon_list.cpp
    M src/gui/widgets/addon_list.hpp
    M src/gui/widgets/button.cpp
    M src/gui/widgets/button.hpp
    M src/gui/widgets/chatbox.cpp
    M src/gui/widgets/chatbox.hpp
    M src/gui/widgets/container_base.cpp
    M src/gui/widgets/container_base.hpp
    M src/gui/widgets/drawing.cpp
    M src/gui/widgets/drawing.hpp
    M src/gui/widgets/generator.cpp
    M src/gui/widgets/generator.hpp
    M src/gui/widgets/generator_private.hpp
    M src/gui/widgets/grid.cpp
    M src/gui/widgets/grid.hpp
    M src/gui/widgets/horizontal_scrollbar.cpp
    M src/gui/widgets/horizontal_scrollbar.hpp
    M src/gui/widgets/image.cpp
    M src/gui/widgets/image.hpp
    M src/gui/widgets/label.cpp
    M src/gui/widgets/label.hpp
    M src/gui/widgets/list.hpp
    M src/gui/widgets/listbox.cpp
    M src/gui/widgets/listbox.hpp
    M src/gui/widgets/matrix.cpp
    M src/gui/widgets/matrix.hpp
    M src/gui/widgets/menu_button.cpp
    M src/gui/widgets/menu_button.hpp
    M src/gui/widgets/minimap.cpp
    M src/gui/widgets/minimap.hpp
    M src/gui/widgets/multi_page.cpp
    M src/gui/widgets/multi_page.hpp
    M src/gui/widgets/multimenu_button.cpp
    M src/gui/widgets/multimenu_button.hpp
    M src/gui/widgets/pane.cpp
    M src/gui/widgets/pane.hpp
    M src/gui/widgets/panel.cpp
    M src/gui/widgets/panel.hpp
    M src/gui/widgets/password_box.cpp
    M src/gui/widgets/password_box.hpp
    M src/gui/widgets/progress_bar.cpp
    M src/gui/widgets/progress_bar.hpp
    M src/gui/widgets/repeating_button.cpp
    M src/gui/widgets/repeating_button.hpp
    M src/gui/widgets/scroll_label.cpp
    M src/gui/widgets/scroll_label.hpp
    M src/gui/widgets/scrollbar_container.cpp
    M src/gui/widgets/scrollbar_container.hpp
    M src/gui/widgets/scrollbar_container_private.hpp
    M src/gui/widgets/scrollbar_panel.cpp
    M src/gui/widgets/scrollbar_panel.hpp
    M src/gui/widgets/size_lock.cpp
    M src/gui/widgets/size_lock.hpp
    M src/gui/widgets/slider.cpp
    M src/gui/widgets/slider.hpp
    M src/gui/widgets/spacer.cpp
    M src/gui/widgets/spacer.hpp
    M src/gui/widgets/stacked_widget.cpp
    M src/gui/widgets/stacked_widget.hpp
    M src/gui/widgets/styled_widget.cpp
    M src/gui/widgets/styled_widget.hpp
    M src/gui/widgets/text_box.cpp
    M src/gui/widgets/text_box.hpp
    M src/gui/widgets/toggle_button.cpp
    M src/gui/widgets/toggle_button.hpp
    M src/gui/widgets/toggle_panel.cpp
    M src/gui/widgets/toggle_panel.hpp
    M src/gui/widgets/tree_view.cpp
    M src/gui/widgets/tree_view.hpp
    M src/gui/widgets/tree_view_node.cpp
    M src/gui/widgets/tree_view_node.hpp
    M src/gui/widgets/unit_preview_pane.cpp
    M src/gui/widgets/unit_preview_pane.hpp
    M src/gui/widgets/vertical_scrollbar.cpp
    M src/gui/widgets/vertical_scrollbar.hpp
    M src/gui/widgets/viewport.cpp
    M src/gui/widgets/viewport.hpp
    M src/gui/widgets/widget.hpp
    M src/gui/widgets/widget_helpers.cpp
    M src/gui/widgets/widget_helpers.hpp
    M src/gui/widgets/window.cpp
    M src/gui/widgets/window.hpp

  Log Message:
  -----------
  Merge branch 'gui2_widget_ptr_init_refactor'


Compare: https://github.com/wesnoth/wesnoth/compare/131868581d1b...58d3cad31581
      **NOTE:** This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/

      Functionality will be removed from GitHub.com on January 31st, 2019.


More information about the Commits mailing list