diff --git a/src/gui/widgets/generator.hpp b/src/gui/widgets/generator.hpp index 4c3a7034175..b74d7e7bd9e 100644 --- a/src/gui/widgets/generator.hpp +++ b/src/gui/widgets/generator.hpp @@ -22,9 +22,7 @@ namespace gui2 { - struct builder_grid; -typedef std::shared_ptr builder_grid_const_ptr; class grid; @@ -176,7 +174,7 @@ public: * @returns A reference to the newly created grid. */ virtual grid& create_item(const int index, - builder_grid_const_ptr list_builder, + const builder_grid& list_builder, const string_map& item_data, const std::function& callback) = 0; @@ -200,7 +198,7 @@ public: */ virtual grid& create_item(const int index, - builder_grid_const_ptr list_builder, + const builder_grid& list_builder, const std::map& data, const std::function& callback) = 0; @@ -220,7 +218,7 @@ public: * in the grid is (de)selected. */ virtual void create_items(const int index, - builder_grid_const_ptr list_builder, + const builder_grid& list_builder, const std::vector& data, const std::function& callback) = 0; @@ -242,7 +240,7 @@ public: */ virtual void create_items( const int index, - builder_grid_const_ptr list_builder, + const builder_grid& list_builder, const std::vector>& data, const std::function& callback) = 0; diff --git a/src/gui/widgets/generator_private.hpp b/src/gui/widgets/generator_private.hpp index 7d25d8ca59f..e19e4112aeb 100644 --- a/src/gui/widgets/generator_private.hpp +++ b/src/gui/widgets/generator_private.hpp @@ -714,7 +714,7 @@ public: /** Inherited from generator_base. */ grid& create_item(const int index, - builder_grid_const_ptr list_builder, + const builder_grid& list_builder, const string_map& item_data, const std::function& callback) override { @@ -726,15 +726,14 @@ public: /** Inherited from generator_base. */ grid& create_item(const int index, - builder_grid_const_ptr list_builder, + const builder_grid& list_builder, const std::map& item_data, const std::function& callback) override { - assert(list_builder); assert(index == -1 || static_cast(index) <= items_.size()); child* item = new child; - list_builder->build(&item->child_grid); + list_builder.build(&item->child_grid); init(&item->child_grid, item_data, callback); @@ -757,7 +756,7 @@ public: /** Inherited from generator_base. */ virtual void create_items(const int index, - builder_grid_const_ptr list_builder, + const builder_grid& list_builder, const std::vector>& data, const std::function& callback) override { @@ -766,7 +765,7 @@ public: /** Inherited from generator_base. */ virtual void create_items(const int index, - builder_grid_const_ptr list_builder, + const builder_grid& list_builder, const std::vector& data, const std::function& callback) override { @@ -1072,7 +1071,7 @@ private: */ template void impl_create_items(const int index, - builder_grid_const_ptr list_builder, + const builder_grid& list_builder, const std::vector& data, const std::function& callback) { diff --git a/src/gui/widgets/listbox.cpp b/src/gui/widgets/listbox.cpp index 36b67c91ead..b723cb3d1ad 100644 --- a/src/gui/widgets/listbox.cpp +++ b/src/gui/widgets/listbox.cpp @@ -67,7 +67,7 @@ listbox::listbox(const implementation::builder_styled_widget& builder, grid& listbox::add_row(const string_map& item, const int index) { assert(generator_); - grid& row = generator_->create_item(index, list_builder_, item, std::bind(&listbox::list_item_clicked, this, _1)); + grid& row = generator_->create_item(index, *list_builder_, item, std::bind(&listbox::list_item_clicked, this, _1)); resize_content(row); @@ -77,7 +77,7 @@ grid& listbox::add_row(const string_map& item, const int index) grid& listbox::add_row(const std::map& data, const int index) { assert(generator_); - grid& row = generator_->create_item(index, list_builder_, data, std::bind(&listbox::list_item_clicked, this, _1)); + grid& row = generator_->create_item(index, *list_builder_, data, std::bind(&listbox::list_item_clicked, this, _1)); resize_content(row); @@ -582,7 +582,7 @@ void listbox::finalize(builder_grid_const_ptr header, swap_grid(&get_grid(), content_grid(), footer->build(), "_footer_grid"); } - generator_->create_items(-1, list_builder_, list_data, std::bind(&listbox::list_item_clicked, this, _1)); + generator_->create_items(-1, *list_builder_, list_data, std::bind(&listbox::list_item_clicked, this, _1)); swap_grid(nullptr, content_grid(), generator_, "_list_grid"); } diff --git a/src/gui/widgets/multi_page.cpp b/src/gui/widgets/multi_page.cpp index c24e4c52475..1a0a7112a80 100644 --- a/src/gui/widgets/multi_page.cpp +++ b/src/gui/widgets/multi_page.cpp @@ -43,7 +43,7 @@ multi_page::multi_page(const implementation::builder_multi_page& builder) grid& multi_page::add_page(const string_map& item) { assert(generator_); - grid& page = generator_->create_item(-1, page_builders_.begin()->second, item, nullptr); + grid& page = generator_->create_item(-1, *page_builders_.begin()->second, item, nullptr); return page; } @@ -53,14 +53,14 @@ grid& multi_page::add_page(const std::string& type, int insert_pos, const string assert(generator_); auto it_builder = page_builders_.find(type); VALIDATE(it_builder != page_builders_.end(), "invalid page type '" + type + "'"); - return generator_->create_item(insert_pos, it_builder->second, item, nullptr); + return generator_->create_item(insert_pos, *it_builder->second, item, nullptr); } grid& multi_page::add_page( const std::map& data) { assert(generator_); - grid& page = generator_->create_item(-1, page_builders_.begin()->second, data, nullptr); + grid& page = generator_->create_item(-1, *page_builders_.begin()->second, data, nullptr); return page; } @@ -71,7 +71,7 @@ grid& multi_page::add_page( assert(generator_); auto it_builder = page_builders_.find(type); VALIDATE(it_builder != page_builders_.end(), "invalid page type '" + type + "'"); - return generator_->create_item(insert_pos, it_builder->second, data, nullptr); + return generator_->create_item(insert_pos, *it_builder->second, data, nullptr); } void multi_page::remove_page(const unsigned page, unsigned count) @@ -143,7 +143,7 @@ unsigned multi_page::get_state() const void multi_page::finalize(const std::vector& page_data) { assert(generator_); - generator_->create_items(-1, page_builders_.begin()->second, page_data, nullptr); + generator_->create_items(-1, *page_builders_.begin()->second, page_data, nullptr); swap_grid(nullptr, &get_grid(), generator_, "_content_grid"); } diff --git a/src/gui/widgets/stacked_widget.cpp b/src/gui/widgets/stacked_widget.cpp index b54a4f16325..0a40e8532f1 100644 --- a/src/gui/widgets/stacked_widget.cpp +++ b/src/gui/widgets/stacked_widget.cpp @@ -89,7 +89,7 @@ stacked_widget::finalize(std::vector widget_builder) string_map empty_data; for(const auto & builder : widget_builder) { - generator_->create_item(-1, builder, empty_data, nullptr); + generator_->create_item(-1, *builder, empty_data, nullptr); } swap_grid(nullptr, &get_grid(), generator_, "_content_grid");