Merge pull request #99700 from hpvb/scene_tree_editor_performance
Improve Scene Tree editor performance
This commit is contained in:
@ -1258,6 +1258,18 @@ void TreeItem::deselect(int p_column) {
|
||||
_cell_deselected(p_column);
|
||||
}
|
||||
|
||||
void TreeItem::clear_buttons() {
|
||||
int i = 0;
|
||||
for (Cell &cell : cells) {
|
||||
if (!cell.buttons.is_empty()) {
|
||||
cell.buttons.clear();
|
||||
cell.cached_minimum_size_dirty = true;
|
||||
_changed_notify(i);
|
||||
}
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
void TreeItem::add_button(int p_column, const Ref<Texture2D> &p_button, int p_id, bool p_disabled, const String &p_tooltip) {
|
||||
ERR_FAIL_INDEX(p_column, cells.size());
|
||||
ERR_FAIL_COND(!p_button.is_valid());
|
||||
@ -1768,6 +1780,7 @@ 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("clear_buttons"), &TreeItem::clear_buttons);
|
||||
ClassDB::bind_method(D_METHOD("add_button", "column", "button", "id", "disabled", "tooltip_text"), &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_text", "column", "button_index"), &TreeItem::get_button_tooltip_text);
|
||||
@ -3726,7 +3739,7 @@ void Tree::gui_input(const Ref<InputEvent> &p_event) {
|
||||
_determine_hovered_item();
|
||||
|
||||
bool rtl = is_layout_rtl();
|
||||
if (pressing_for_editor && popup_pressing_edited_item && (popup_pressing_edited_item->get_cell_mode(popup_pressing_edited_item_column) == TreeItem::CELL_MODE_RANGE)) {
|
||||
if (pressing_for_editor && popup_pressing_edited_item && !popup_pressing_edited_item->cells.is_empty() && (popup_pressing_edited_item->get_cell_mode(popup_pressing_edited_item_column) == TreeItem::CELL_MODE_RANGE)) {
|
||||
/* This needs to happen now, because the popup can be closed when pressing another item, and must remain the popup edited item until it actually closes */
|
||||
popup_edited_item = popup_pressing_edited_item;
|
||||
popup_edited_item_col = popup_pressing_edited_item_column;
|
||||
|
||||
Reference in New Issue
Block a user