Tree View: add getter for implementations vector to avoid passing around a reference to every new node
This commit is contained in:
parent
a6ba521a5e
commit
0cc0b9fc74
4 changed files with 7 additions and 17 deletions
|
@ -43,7 +43,6 @@ tree_view::tree_view(const std::vector<node_definition>& node_definitions)
|
|||
, indentation_step_size_(0)
|
||||
, need_layout_(false)
|
||||
, root_node_(new tree_view_node("root",
|
||||
node_definitions_,
|
||||
nullptr,
|
||||
*this,
|
||||
std::map<std::string, string_map>()))
|
||||
|
|
|
@ -99,6 +99,11 @@ public:
|
|||
selection_change_callback_ = callback;
|
||||
}
|
||||
|
||||
const std::vector<node_definition>& get_node_definitions() const
|
||||
{
|
||||
return node_definitions_;
|
||||
}
|
||||
|
||||
protected:
|
||||
/***** ***** ***** ***** keyboard functions ***** ***** ***** *****/
|
||||
/** Inherited from scrollbar_container. */
|
||||
|
|
|
@ -34,7 +34,6 @@ namespace gui2
|
|||
|
||||
tree_view_node::tree_view_node(
|
||||
const std::string& id,
|
||||
const std::vector<node_definition>& node_definitions,
|
||||
tree_view_node* parent_node,
|
||||
tree_view& parent_tree_view,
|
||||
const std::map<std::string /* widget id */, string_map>& data)
|
||||
|
@ -43,7 +42,6 @@ tree_view_node::tree_view_node(
|
|||
, tree_view_(&parent_tree_view)
|
||||
, grid_()
|
||||
, children_()
|
||||
, node_definitions_(node_definitions)
|
||||
, toggle_(nullptr)
|
||||
, label_(nullptr)
|
||||
, unfolded_(false)
|
||||
|
@ -59,7 +57,7 @@ tree_view_node::tree_view_node(
|
|||
return;
|
||||
}
|
||||
|
||||
for(const auto& node_definition : node_definitions_) {
|
||||
for(const auto& node_definition : get_tree_view().get_node_definitions()) {
|
||||
if(node_definition.id != id) {
|
||||
continue;
|
||||
}
|
||||
|
@ -142,7 +140,7 @@ tree_view_node& tree_view_node::add_child(
|
|||
itor = children_.begin() + index;
|
||||
}
|
||||
|
||||
itor = children_.insert(itor, new tree_view_node(id, node_definitions_, this, get_tree_view(), data));
|
||||
itor = children_.insert(itor, new tree_view_node(id, this, get_tree_view(), data));
|
||||
|
||||
if(is_folded() /*|| is_root_node()*/) {
|
||||
return *itor;
|
||||
|
|
|
@ -37,7 +37,6 @@ class tree_view_node : public widget
|
|||
friend class tree_view;
|
||||
|
||||
public:
|
||||
using node_definition = implementation::tree_node;
|
||||
using node_children_vector = boost::ptr_vector<tree_view_node>;
|
||||
|
||||
bool operator==(const tree_view_node& node)
|
||||
|
@ -47,7 +46,6 @@ public:
|
|||
|
||||
tree_view_node(
|
||||
const std::string& id,
|
||||
const std::vector<node_definition>& node_definitions,
|
||||
tree_view_node* parent_node,
|
||||
tree_view& parent_tree_view,
|
||||
const std::map<std::string /* widget id */, string_map>& data);
|
||||
|
@ -275,16 +273,6 @@ private:
|
|||
*/
|
||||
node_children_vector children_;
|
||||
|
||||
/**
|
||||
* The node definitions known to use.
|
||||
*
|
||||
* This list is needed to create new nodes.
|
||||
*
|
||||
* @todo Maybe store this list in the tree_view to avoid copying the
|
||||
* reference.
|
||||
*/
|
||||
const std::vector<node_definition>& node_definitions_;
|
||||
|
||||
/** The toggle for the folded state. */
|
||||
selectable_item* toggle_;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue