diff options
author | Juan Linietsky <reduzio@gmail.com> | 2016-07-09 13:14:46 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2016-07-09 13:15:45 -0300 |
commit | 1d6be8b00d9c46ca748f9465864ce74487c6bc88 (patch) | |
tree | c3e6237e4b402ec4604dbb4f597c2838d8aadc5e /scene/gui/tree.cpp | |
parent | 48bdaaa5601e82f242af240fd9eb1b4a7acb79b7 (diff) | |
download | redot-engine-1d6be8b00d9c46ca748f9465864ce74487c6bc88.tar.gz |
Changed tree so shift-selection skips folded children, closes #5515
Diffstat (limited to 'scene/gui/tree.cpp')
-rw-r--r-- | scene/gui/tree.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index f30b1979ef..a3d6ac9714 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -1335,7 +1335,7 @@ int Tree::_count_selected_items(TreeItem* p_from) const { return count; } -void Tree::select_single_item(TreeItem *p_selected,TreeItem *p_current,int p_col,TreeItem *p_prev,bool *r_in_range) { +void Tree::select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_col, TreeItem *p_prev, bool *r_in_range, bool p_force_deselect) { TreeItem::Cell &selected_cell=p_selected->cells[p_col]; @@ -1409,7 +1409,7 @@ void Tree::select_single_item(TreeItem *p_selected,TreeItem *p_current,int p_col } else { - if (r_in_range && *r_in_range) { + if (r_in_range && *r_in_range && !p_force_deselect) { if (!c.selected && c.selectable) { @@ -1417,7 +1417,7 @@ void Tree::select_single_item(TreeItem *p_selected,TreeItem *p_current,int p_col emit_signal("multi_selected",p_current,i,true); } - } else if (!r_in_range){ + } else if (!r_in_range || p_force_deselect){ if (select_mode==SELECT_MULTI && c.selected) emit_signal("multi_selected",p_current,i,false); c.selected=false; @@ -1436,7 +1436,7 @@ void Tree::select_single_item(TreeItem *p_selected,TreeItem *p_current,int p_col while (c) { - select_single_item(p_selected,c,p_col,p_prev,r_in_range); + select_single_item(p_selected,c,p_col,p_prev,r_in_range,p_current->is_collapsed() || p_force_deselect); c=c->next; } |