Quellcode durchsuchen

Fix "grab_focus: Condition "!is_inside_tree()" is true" when AcceptDialog was visible from the editor.

= vor 3 Jahren
Ursprung
Commit
2de52c74ae
1 geänderte Dateien mit 8 neuen und 1 gelöschten Zeilen
  1. 8 1
      scene/gui/dialogs.cpp

+ 8 - 1
scene/gui/dialogs.cpp

@@ -60,9 +60,16 @@ void AcceptDialog::_update_theme_item_cache() {
 
 void AcceptDialog::_notification(int p_what) {
 	switch (p_what) {
-		case NOTIFICATION_VISIBILITY_CHANGED: {
+		case NOTIFICATION_POST_ENTER_TREE: {
 			if (is_visible()) {
 				get_ok_button()->grab_focus();
+			}
+		} break;
+		case NOTIFICATION_VISIBILITY_CHANGED: {
+			if (is_visible()) {
+				if (get_ok_button()->is_inside_tree()) {
+					get_ok_button()->grab_focus();
+				}
 				_update_child_rects();
 				parent_visible = get_parent_visible_window();
 				if (parent_visible) {