浏览代码

Making deselect work for TreeItem when select_mode is SELECT_SINGLE and item_selected is now properly emitted

Bruno Ortiz 8 年之前
父节点
当前提交
4b9a96859b
共有 1 个文件被更改,包括 6 次插入16 次删除
  1. 6 16
      scene/gui/tree.cpp

+ 6 - 16
scene/gui/tree.cpp

@@ -1396,11 +1396,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;
@@ -1410,24 +1406,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;
@@ -1438,6 +1427,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)) {
 
@@ -2923,8 +2914,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();