Browse Source

Merge pull request #8796 from yanorax/treecolumn_title_pressed

Add column_title_pressed signal to Tree node
Rémi Verschelde 8 years ago
parent
commit
a75623f436
1 changed files with 21 additions and 0 deletions
  1. 21 0
      scene/gui/tree.cpp

+ 21 - 0
scene/gui/tree.cpp

@@ -2214,6 +2214,26 @@ void Tree::_gui_input(InputEvent p_event) {
 
 				if (b.button_index == BUTTON_LEFT) {
 
+					Ref<StyleBox> bg = cache.bg;
+
+					Point2 pos = Point2(b.x, b.y) - bg->get_offset();
+					if (show_column_titles) {
+						pos.y -= _get_title_button_height();
+
+						if (pos.y < 0) {
+							pos.x += cache.offset.x;
+							int len = 0;
+							for (int i = 0; i < columns.size(); i++) {
+
+								len += get_column_width(i);
+								if (pos.x < len) {
+									emit_signal("column_title_pressed", i);
+									break;
+								}
+							}
+						}
+					}
+
 					if (single_select_defer) {
 						select_single_item(single_select_defer, root, single_select_defer_column);
 						single_select_defer = NULL;
@@ -3456,6 +3476,7 @@ void Tree::_bind_methods() {
 	ADD_SIGNAL(MethodInfo("button_pressed", PropertyInfo(Variant::OBJECT, "item"), PropertyInfo(Variant::INT, "column"), PropertyInfo(Variant::INT, "id")));
 	ADD_SIGNAL(MethodInfo("custom_popup_edited", PropertyInfo(Variant::BOOL, "arrow_clicked")));
 	ADD_SIGNAL(MethodInfo("item_activated"));
+	ADD_SIGNAL(MethodInfo("column_title_pressed", PropertyInfo(Variant::INT, "column")));
 
 	BIND_CONSTANT(SELECT_SINGLE);
 	BIND_CONSTANT(SELECT_ROW);