From a3f60335134ded54185ee062a5cccc9869a1db04 Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Tue, 8 Feb 2022 23:56:19 +0800 Subject: [PATCH] Improve TreeItem button API --- doc/classes/Tree.xml | 7 +++++++ doc/classes/TreeItem.xml | 20 ++++++++++++++++++-- scene/gui/tree.cpp | 5 ++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml index 97e04464f74..94fda099894 100644 --- a/doc/classes/Tree.xml +++ b/doc/classes/Tree.xml @@ -51,6 +51,13 @@ [b]Note:[/b] Despite the name of this method, the focus cursor itself is only visible in [constant SELECT_MULTI] mode. + + + + + Returns the button id at [code]position[/code], or -1 if no button is there. + + diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml index cae6b49d583..16005a8ef78 100644 --- a/doc/classes/TreeItem.xml +++ b/doc/classes/TreeItem.xml @@ -14,11 +14,11 @@ - + - Adds a button with [Texture] [code]button[/code] at column [code]column[/code]. The [code]button_idx[/code] index is used to identify the button when calling other methods. If not specified, the next available index is used, which may be retrieved by calling [method get_button_count] immediately after this method. Optionally, the button can be [code]disabled[/code] and have a [code]tooltip[/code]. + Adds a button with [Texture] [code]button[/code] at column [code]column[/code]. The [code]id[/code] is used to identify the button. If not specified, the next available index is used, which may be retrieved by calling [method get_button_count] immediately after this method. Optionally, the button can be [code]disabled[/code] and have a [code]tooltip[/code]. @@ -65,6 +65,14 @@ Returns the [Texture] of the button at index [code]button_idx[/code] in column [code]column[/code]. + + + + + + Returns the button index if there is a button with id [code]id[/code] in column [code]column[/code], otherwise returns -1. + + @@ -72,6 +80,14 @@ Returns the number of buttons in column [code]column[/code]. May be used to get the most recently added button's index, if no index was specified. + + + + + + Returns the id for the button at index [code]button_idx[/code] in column [code]column[/code]. + + diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 46ad5917840..2b257c5abae 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -776,9 +776,11 @@ void TreeItem::_bind_methods() { ClassDB::bind_method(D_METHOD("set_custom_as_button", "column", "enable"), &TreeItem::set_custom_as_button); ClassDB::bind_method(D_METHOD("is_custom_set_as_button", "column"), &TreeItem::is_custom_set_as_button); - ClassDB::bind_method(D_METHOD("add_button", "column", "button", "button_idx", "disabled", "tooltip"), &TreeItem::add_button, DEFVAL(-1), DEFVAL(false), DEFVAL("")); + ClassDB::bind_method(D_METHOD("add_button", "column", "button", "id", "disabled", "tooltip"), &TreeItem::add_button, DEFVAL(-1), DEFVAL(false), DEFVAL("")); ClassDB::bind_method(D_METHOD("get_button_count", "column"), &TreeItem::get_button_count); ClassDB::bind_method(D_METHOD("get_button_tooltip", "column", "button_idx"), &TreeItem::get_button_tooltip); + ClassDB::bind_method(D_METHOD("get_button_id", "column", "button_idx"), &TreeItem::get_button_id); + ClassDB::bind_method(D_METHOD("get_button_by_id", "column", "id"), &TreeItem::get_button_by_id); ClassDB::bind_method(D_METHOD("get_button", "column", "button_idx"), &TreeItem::get_button); ClassDB::bind_method(D_METHOD("set_button", "column", "button_idx", "button"), &TreeItem::set_button); ClassDB::bind_method(D_METHOD("erase_button", "column", "button_idx"), &TreeItem::erase_button); @@ -3844,6 +3846,7 @@ void Tree::_bind_methods() { ClassDB::bind_method(D_METHOD("get_item_at_position", "position"), &Tree::get_item_at_position); ClassDB::bind_method(D_METHOD("get_column_at_position", "position"), &Tree::get_column_at_position); ClassDB::bind_method(D_METHOD("get_drop_section_at_position", "position"), &Tree::get_drop_section_at_position); + ClassDB::bind_method(D_METHOD("get_button_id_at_position", "position"), &Tree::get_button_id_at_position); ClassDB::bind_method(D_METHOD("ensure_cursor_is_visible"), &Tree::ensure_cursor_is_visible);