aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Ortiz2016-12-20 19:47:24 -0200
committerRémi Verschelde2017-01-12 19:15:30 +0100
commit01b8beb023eb7a4c9f1027afc7ea47d13ff2fcbd (patch)
treea75432eef6e1568a87316807599b061dcc27da7d
parent4f35fdd1e341ed60ebda7a8ed912fcbf2361f572 (diff)
downloadgodot-01b8beb023eb7a4c9f1027afc7ea47d13ff2fcbd.tar.gz
godot-01b8beb023eb7a4c9f1027afc7ea47d13ff2fcbd.tar.zst
godot-01b8beb023eb7a4c9f1027afc7ea47d13ff2fcbd.zip
Making deselect work for TreeItem when select_mode is SELECT_SINGLE and item_selected is now properly emitted
(cherry picked from commit 4b9a96859b6d80b9b50a0512d3ab9c6d05a4deb1)
-rw-r--r--scene/gui/tree.cpp22
1 files changed, 6 insertions, 16 deletions
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index 0e63c1188..7158ffb3e 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -1379,11 +1379,7 @@ void Tree::select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_c
if (select_mode==SELECT_ROW) {
-
- if (p_selected==p_current) {
-
- if (!c.selected) {
-
+ if (p_selected==p_current && !c.selected) {
c.selected=true;
selected_item=p_selected;
selected_col=0;
@@ -1393,24 +1389,17 @@ void Tree::select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_c
emitted_row=true;
}
//if (p_col==i)
- // p_current->selected_signal.call(p_col);
- }
+ // p_current->selected_signal.call(p_col);
- } else {
-
- if (c.selected) {
+ } else if (c.selected) {
c.selected=false;
//p_current->deselected_signal.call(p_col);
- }
-
}
-
} else if (select_mode==SELECT_SINGLE || select_mode==SELECT_MULTI) {
if (!r_in_range && &selected_cell==&c) {
-
if (!selected_cell.selected) {
selected_cell.selected=true;
@@ -1421,6 +1410,8 @@ void Tree::select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_c
emit_signal("cell_selected");
if (select_mode==SELECT_MULTI)
emit_signal("multi_selected",p_current,i,true);
+ else if(select_mode == SELECT_SINGLE)
+ emit_signal("item_selected");
} else if (select_mode==SELECT_MULTI && (selected_item!=p_selected || selected_col!=i)) {
@@ -2909,8 +2900,7 @@ void Tree::item_selected(int p_column,TreeItem *p_item) {
void Tree::item_deselected(int p_column,TreeItem *p_item) {
- if (select_mode==SELECT_MULTI) {
-
+ if (select_mode==SELECT_MULTI || select_mode == SELECT_SINGLE) {
p_item->cells[p_column].selected=false;
}
update();