Browse Source

Blocking updating in SceneTreeEditor when editing an item

gongpha 4 years ago
parent
commit
bb867d41ee
3 changed files with 9 additions and 0 deletions
  1. 4 0
      editor/scene_tree_editor.cpp
  2. 4 0
      scene/gui/tree.cpp
  3. 1 0
      scene/gui/tree.h

+ 4 - 0
editor/scene_tree_editor.cpp

@@ -531,6 +531,10 @@ void SceneTreeEditor::_update_tree() {
 		return;
 	}
 
+	if (tree->is_editing()) {
+		return;
+	}
+
 	updating_tree = true;
 	tree->clear();
 	if (get_scene_node()) {

+ 4 - 0
scene/gui/tree.cpp

@@ -2981,6 +2981,10 @@ bool Tree::edit_selected() {
 	return false;
 }
 
+bool Tree::is_editing() {
+	return popup_editor->is_visible();
+}
+
 Size2 Tree::get_internal_min_size() const {
 	Size2i size = cache.bg->get_offset();
 	if (root) {

+ 1 - 0
scene/gui/tree.h

@@ -622,6 +622,7 @@ public:
 	int get_item_offset(TreeItem *p_item) const;
 	Rect2 get_item_rect(TreeItem *p_item, int p_column = -1) const;
 	bool edit_selected();
+	bool is_editing();
 
 	// First item that starts with the text, from the current focused item down and wraps around.
 	TreeItem *search_item_text(const String &p_find, int *r_col = nullptr, bool p_selectable = false);