hide treebox node expander if no visible children
improve the new feature based on PR#500
This commit is contained in:
parent
c7332129b0
commit
462aadcc26
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* A Tree Container class implementation
|
* A Tree Container class implementation
|
||||||
* Copyright(C) 2003-2019 Jinhao(cnjinhao@hotmail.com)
|
* Copyright(C) 2003-2020 Jinhao(cnjinhao@hotmail.com)
|
||||||
*
|
*
|
||||||
* Distributed under the Boost Software License, Version 1.0.
|
* Distributed under the Boost Software License, Version 1.0.
|
||||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -508,7 +508,7 @@ namespace detail
|
|||||||
void _m_for_each(const ::std::string& key, Function function) const
|
void _m_for_each(const ::std::string& key, Function function) const
|
||||||
{
|
{
|
||||||
//Ignores separaters at the begin of key.
|
//Ignores separaters at the begin of key.
|
||||||
::std::string::size_type beg = key.find_first_not_of("\\/");
|
auto beg = key.find_first_not_of("\\/");
|
||||||
if (key.npos == beg)
|
if (key.npos == beg)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* A Tree Box Implementation
|
* A Tree Box Implementation
|
||||||
* Nana C++ Library(http://www.nanapro.org)
|
* Nana C++ Library(http://www.nanapro.org)
|
||||||
* Copyright(C) 2003-2019 Jinhao(cnjinhao@hotmail.com)
|
* Copyright(C) 2003-2020 Jinhao(cnjinhao@hotmail.com)
|
||||||
*
|
*
|
||||||
* Distributed under the Boost Software License, Version 1.0.
|
* Distributed under the Boost Software License, Version 1.0.
|
||||||
* (See accompanying file LICENSE or copy at
|
* (See accompanying file LICENSE or copy at
|
||||||
@ -49,7 +49,7 @@ namespace nana
|
|||||||
|
|
||||||
struct node_attribute
|
struct node_attribute
|
||||||
{
|
{
|
||||||
bool has_children;
|
bool has_children; ///< Determines whether the node has visible children
|
||||||
bool expended;
|
bool expended;
|
||||||
checkstate checked;
|
checkstate checked;
|
||||||
bool selected;
|
bool selected;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* A Treebox Implementation
|
* A Treebox Implementation
|
||||||
* Nana C++ Library(http://www.nanapro.org)
|
* Nana C++ Library(http://www.nanapro.org)
|
||||||
* Copyright(C) 2003-2019 Jinhao(cnjinhao@hotmail.com)
|
* Copyright(C) 2003-2010 Jinhao(cnjinhao@hotmail.com)
|
||||||
*
|
*
|
||||||
* Distributed under the Boost Software License, Version 1.0.
|
* Distributed under the Boost Software License, Version 1.0.
|
||||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -387,7 +387,18 @@ namespace nana
|
|||||||
|
|
||||||
void assign_node_attr(node_attribute& ndattr, const node_type* node) const
|
void assign_node_attr(node_attribute& ndattr, const node_type* node) const
|
||||||
{
|
{
|
||||||
ndattr.has_children = (nullptr != node->child);
|
// Check if there is a visible child that node has.
|
||||||
|
// This is an improvement based on a new feature that allows treebox node to be hidden(PR#500)
|
||||||
|
ndattr.has_children = false;
|
||||||
|
for (auto p = node->child; p; p = p->next)
|
||||||
|
{
|
||||||
|
if (!p->value.second.hidden)
|
||||||
|
{
|
||||||
|
ndattr.has_children = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ndattr.expended = node->value.second.expanded;
|
ndattr.expended = node->value.second.expanded;
|
||||||
ndattr.text = node->value.second.text;
|
ndattr.text = node->value.second.text;
|
||||||
ndattr.checked = node->value.second.checked;
|
ndattr.checked = node->value.second.checked;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user