|
@@ -3623,6 +3623,47 @@ TreeItem *Tree::get_item_at_position(const Point2 &p_pos) const {
|
|
|
return nullptr;
|
|
|
}
|
|
|
|
|
|
+int Tree::get_button_id_at_position(const Point2 &p_pos) const {
|
|
|
+ if (root) {
|
|
|
+ Point2 pos = p_pos;
|
|
|
+ pos -= cache.bg->get_offset();
|
|
|
+ pos.y -= _get_title_button_height();
|
|
|
+ if (pos.y < 0) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (h_scroll->is_visible_in_tree()) {
|
|
|
+ pos.x += h_scroll->get_value();
|
|
|
+ }
|
|
|
+ if (v_scroll->is_visible_in_tree()) {
|
|
|
+ pos.y += v_scroll->get_value();
|
|
|
+ }
|
|
|
+
|
|
|
+ int col, h, section;
|
|
|
+ TreeItem *it = _find_item_at_pos(root, pos, col, h, section);
|
|
|
+
|
|
|
+ if (it) {
|
|
|
+ const TreeItem::Cell &c = it->cells[col];
|
|
|
+ int col_width = get_column_width(col);
|
|
|
+
|
|
|
+ for (int i = 0; i < col; i++) {
|
|
|
+ pos.x -= get_column_width(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int j = c.buttons.size() - 1; j >= 0; j--) {
|
|
|
+ Ref<Texture2D> b = c.buttons[j].texture;
|
|
|
+ Size2 size = b->get_size() + cache.button_pressed->get_minimum_size();
|
|
|
+ if (pos.x > col_width - size.width) {
|
|
|
+ return c.buttons[j].id;
|
|
|
+ }
|
|
|
+ col_width -= size.width;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return -1;
|
|
|
+}
|
|
|
+
|
|
|
String Tree::get_tooltip(const Point2 &p_pos) const {
|
|
|
if (root) {
|
|
|
Point2 pos = p_pos;
|