Browse Source

Fix Floating Window not visible after restore on KDE

Hilderin 6 months ago
parent
commit
150191353f
2 changed files with 12 additions and 0 deletions
  1. 5 0
      editor/window_wrapper.cpp
  2. 7 0
      platform/linuxbsd/x11/display_server_x11.cpp

+ 5 - 0
editor/window_wrapper.cpp

@@ -261,6 +261,11 @@ void WindowWrapper::restore_window_from_saved_position(const Rect2 p_window_rect
 	window_rect = Rect2i(window_rect.position * screen_ratio, window_rect.size * screen_ratio);
 	window_rect.position += real_screen_rect.position;
 
+	// Make sure to restore the window if the user minimized it the last time it was displayed.
+	if (window->get_mode() == Window::MODE_MINIMIZED) {
+		window->set_mode(Window::MODE_WINDOWED);
+	}
+
 	// All good, restore the window.
 	window->set_current_screen(p_screen);
 	if (window->is_visible()) {

+ 7 - 0
platform/linuxbsd/x11/display_server_x11.cpp

@@ -4727,6 +4727,13 @@ void DisplayServerX11::process_events() {
 
 				// Have we failed to set fullscreen while the window was unmapped?
 				_validate_mode_on_map(window_id);
+
+				// On KDE Plasma, when the parent window of an embedded process is restored after being minimized,
+				// only the embedded window receives the Map notification, causing it to
+				// appear without its parent.
+				if (wd.embed_parent) {
+					XMapWindow(x11_display, wd.embed_parent);
+				}
 			} break;
 
 			case Expose: {