2
0
Эх сурвалжийг харах

Make inspector gain focus on refresh only if it has it, fixes #24979, closes #25053

Juan Linietsky 6 жил өмнө
parent
commit
c70c43c888

+ 22 - 1
editor/editor_inspector.cpp

@@ -1366,7 +1366,28 @@ void EditorInspector::update_tree() {
 
 	//to update properly if all is refreshed
 	StringName current_selected = property_selected;
-	int current_focusable = property_focusable;
+	int current_focusable = -1;
+
+	if (property_focusable != -1) {
+		//check focusable is really focusable
+		bool restore_focus = false;
+		Control *focused = get_focus_owner();
+		if (focused) {
+			Node *parent = focused->get_parent();
+			while (parent) {
+				EditorInspector *inspector = Object::cast_to<EditorInspector>(parent);
+				if (inspector) {
+					restore_focus = inspector == this; //may be owned by another inspector
+					break; //exit after the first inspector is found, since there may be nested ones
+				}
+				parent = parent->get_parent();
+			}
+		}
+
+		if (restore_focus) {
+			current_focusable = property_focusable;
+		}
+	}
 
 	_clear();