Преглед изворни кода

Fix inconsistent column in Tree click detection

kobewi пре 1 недеља
родитељ
комит
1f4044c0f1
1 измењених фајлова са 13 додато и 4 уклоњено
  1. 13 4
      scene/gui/tree.cpp

+ 13 - 4
scene/gui/tree.cpp

@@ -6037,13 +6037,22 @@ TreeItem *Tree::_find_item_at_pos(TreeItem *p_item, const Point2 &p_pos, int &r_
 			}
 			}
 
 
 			for (int i = 0; i < columns.size(); i++) {
 			for (int i = 0; i < columns.size(); i++) {
-				int w = get_column_width(i);
-				if (pos.x < w) {
-					r_column = i;
+				int col_width = get_column_width(i);
+
+				if (p_item->cells[i].expand_right) {
+					int plus = 1;
+					while (i + plus < columns.size() && !p_item->cells[i + plus].editable && p_item->cells[i + plus].mode == TreeItem::CELL_MODE_STRING && p_item->cells[i + plus].text.is_empty() && p_item->cells[i + plus].icon.is_null() && p_item->cells[i + plus].buttons.is_empty()) {
+						col_width += theme_cache.h_separation;
+						col_width += get_column_width(i + plus);
+						plus++;
+					}
+				}
 
 
+				if (pos.x < col_width) {
+					r_column = i;
 					return p_item;
 					return p_item;
 				}
 				}
-				pos.x -= w;
+				pos.x -= col_width;
 			}
 			}
 
 
 			return nullptr;
 			return nullptr;