GUI2: manager walker objects with unique_ptrs from the get-go
Needed the extra includes since walker_base's dtor needs to be visible to unique_ptr's ctor.
This commit is contained in:
parent
48c13761cc
commit
3bc7c6a3a0
16 changed files with 27 additions and 35 deletions
|
@ -104,7 +104,7 @@ void select_orb_colors::setup_orb_group(const std::string& base_id, bool& shown,
|
|||
using iteration::walker_base;
|
||||
|
||||
grid& selection = find_widget<grid>(get_window(), prefix + "selection", false);
|
||||
std::unique_ptr<iteration::walker_base> iter(selection.create_walker());
|
||||
auto iter = selection.create_walker();
|
||||
|
||||
while(!iter->at_end(walker_base::child)) {
|
||||
widget* next = iter->get(walker_base::child);
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "gui/auxiliary/iterator/walker.hpp"
|
||||
#include "gui/widgets/grid.hpp"
|
||||
#include "gui/widgets/styled_widget.hpp"
|
||||
#include "gui/core/window_builder.hpp"
|
||||
|
@ -140,7 +141,7 @@ public:
|
|||
*
|
||||
* @todo Implement properly.
|
||||
*/
|
||||
virtual iteration::walker_base* create_walker() override
|
||||
virtual iteration::walker_ptr create_walker() override
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "gui/widgets/generator.hpp"
|
||||
|
||||
#include "gui/auxiliary/iterator/walker.hpp"
|
||||
#include "gui/widgets/grid.hpp"
|
||||
#include "gui/widgets/selectable_item.hpp"
|
||||
#include "gui/widgets/toggle_button.hpp"
|
||||
|
@ -870,7 +871,7 @@ public:
|
|||
*
|
||||
* @todo Implement properly.
|
||||
*/
|
||||
virtual iteration::walker_base* create_walker() override
|
||||
virtual iteration::walker_ptr create_walker() override
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -682,9 +682,9 @@ bool grid::disable_click_dismiss() const
|
|||
return false;
|
||||
}
|
||||
|
||||
iteration::walker_base* grid::create_walker()
|
||||
iteration::walker_ptr grid::create_walker()
|
||||
{
|
||||
return new gui2::iteration::grid(*this);
|
||||
return std::make_unique<gui2::iteration::grid>(*this);
|
||||
}
|
||||
|
||||
void grid::set_rows(const unsigned rows)
|
||||
|
|
|
@ -292,7 +292,7 @@ public:
|
|||
bool disable_click_dismiss() const override;
|
||||
|
||||
/** See @ref widget::create_walker. */
|
||||
virtual iteration::walker_base* create_walker() override;
|
||||
virtual iteration::walker_ptr create_walker() override;
|
||||
|
||||
/***** ***** ***** setters / getters for members ***** ****** *****/
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "gui/widgets/matrix.hpp"
|
||||
|
||||
#include "gui/auxiliary/find_widget.hpp"
|
||||
#include "gui/auxiliary/iterator/walker.hpp"
|
||||
#include "gui/core/log.hpp"
|
||||
#include "gui/core/widget_definition.hpp"
|
||||
#include "gui/core/window_builder.hpp"
|
||||
|
@ -162,11 +163,8 @@ bool matrix::disable_click_dismiss() const
|
|||
return false;
|
||||
}
|
||||
|
||||
iteration::walker_base* matrix::create_walker()
|
||||
iteration::walker_ptr matrix::create_walker()
|
||||
{
|
||||
/**
|
||||
* @todo Implement properly.
|
||||
*/
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -177,7 +177,7 @@ public:
|
|||
bool disable_click_dismiss() const override;
|
||||
|
||||
/** See @ref widget::create_walker. */
|
||||
virtual iteration::walker_base* create_walker() override;
|
||||
virtual iteration::walker_ptr create_walker() override;
|
||||
|
||||
/**
|
||||
* Returns a grid in the pane.
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "gui/widgets/pane.hpp"
|
||||
|
||||
#include "gui/auxiliary/find_widget.hpp"
|
||||
#include "gui/auxiliary/iterator/walker.hpp"
|
||||
#include "gui/core/log.hpp"
|
||||
#include "gui/widgets/grid.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
|
@ -225,11 +226,8 @@ bool pane::disable_click_dismiss() const
|
|||
return false;
|
||||
}
|
||||
|
||||
iteration::walker_base* pane::create_walker()
|
||||
iteration::walker_ptr pane::create_walker()
|
||||
{
|
||||
/**
|
||||
* @todo Implement properly.
|
||||
*/
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ public:
|
|||
bool disable_click_dismiss() const override;
|
||||
|
||||
/** See @ref widget::create_walker. */
|
||||
virtual iteration::walker_base* create_walker() override;
|
||||
virtual iteration::walker_ptr create_walker() override;
|
||||
|
||||
/**
|
||||
* Returns a grid in the pane.
|
||||
|
|
|
@ -132,9 +132,9 @@ bool styled_widget::disable_click_dismiss() const
|
|||
return get_visible() == widget::visibility::visible && get_active();
|
||||
}
|
||||
|
||||
iteration::walker_base* styled_widget::create_walker()
|
||||
iteration::walker_ptr styled_widget::create_walker()
|
||||
{
|
||||
return new iteration::walker::widget(*this);
|
||||
return std::make_unique<iteration::walker::widget>(*this);
|
||||
}
|
||||
|
||||
point styled_widget::get_config_minimum_size() const
|
||||
|
|
|
@ -94,7 +94,7 @@ public:
|
|||
bool disable_click_dismiss() const override;
|
||||
|
||||
/** See @ref widget::create_walker. */
|
||||
virtual iteration::walker_base* create_walker() override;
|
||||
virtual iteration::walker_ptr create_walker() override;
|
||||
|
||||
/***** ***** ***** ***** layout functions ***** ***** ***** *****/
|
||||
|
||||
|
|
|
@ -809,9 +809,9 @@ void tree_view_node::layout_initialize(const bool full_initialization)
|
|||
}
|
||||
}
|
||||
|
||||
iteration::walker_base* tree_view_node::create_walker()
|
||||
iteration::walker_ptr tree_view_node::create_walker()
|
||||
{
|
||||
return new gui2::iteration::tree_node(*this, children_);
|
||||
return std::make_unique<gui2::iteration::tree_node>(*this, children_);
|
||||
}
|
||||
|
||||
} // namespace gui2
|
||||
|
|
|
@ -135,12 +135,8 @@ public:
|
|||
void fold(const bool recursive = false);
|
||||
void unfold(const bool recursive = false);
|
||||
|
||||
/**
|
||||
* See @ref widget::create_walker.
|
||||
*
|
||||
* @todo Implement properly.
|
||||
*/
|
||||
virtual iteration::walker_base* create_walker() override;
|
||||
/** See @ref widget::create_walker. */
|
||||
virtual iteration::walker_ptr create_walker() override;
|
||||
|
||||
node_children_vector& children()
|
||||
{
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "gui/widgets/viewport.hpp"
|
||||
|
||||
#include "gui/auxiliary/iterator/walker.hpp"
|
||||
#include "gui/core/log.hpp"
|
||||
#include "config.hpp"
|
||||
#include "utils/const_clone.hpp"
|
||||
|
@ -150,11 +151,8 @@ bool viewport::disable_click_dismiss() const
|
|||
return false;
|
||||
}
|
||||
|
||||
iteration::walker_base* viewport::create_walker()
|
||||
iteration::walker_ptr viewport::create_walker()
|
||||
{
|
||||
/**
|
||||
* @todo Implement properly.
|
||||
*/
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ public:
|
|||
bool disable_click_dismiss() const override;
|
||||
|
||||
/** See @ref widget::create_walker. */
|
||||
virtual iteration::walker_base* create_walker() override;
|
||||
virtual iteration::walker_ptr create_walker() override;
|
||||
|
||||
private:
|
||||
widget_ptr widget_;
|
||||
|
|
|
@ -34,7 +34,7 @@ class grid;
|
|||
|
||||
namespace iteration
|
||||
{
|
||||
class walker_base;
|
||||
using walker_ptr = std::unique_ptr<class walker_base>;
|
||||
} // namespace iteration
|
||||
|
||||
/**
|
||||
|
@ -724,8 +724,8 @@ public:
|
|||
/** Does the widget disable easy close? */
|
||||
virtual bool disable_click_dismiss() const = 0;
|
||||
|
||||
/** Creates a new walker object on the heap. */
|
||||
virtual iteration::walker_base* create_walker() = 0;
|
||||
/** Creates a new walker object managed by a smart pointer. */
|
||||
virtual iteration::walker_ptr create_walker() = 0;
|
||||
};
|
||||
|
||||
using widget_ptr = std::shared_ptr<widget>;
|
||||
|
|
Loading…
Add table
Reference in a new issue