浏览代码

LibGUI: Remember size and position of hidden Windows

And don't reset windowless rects on resize events. Fixes child
windows reappearing at [0,0] and with the wrong dimensions after
being hidden.
thankyouverycool 2 年之前
父节点
当前提交
c5dd72ac71
共有 1 个文件被更改,包括 3 次插入1 次删除
  1. 3 1
      Userland/Libraries/LibGUI/Window.cpp

+ 3 - 1
Userland/Libraries/LibGUI/Window.cpp

@@ -208,6 +208,8 @@ void Window::hide()
     if (GUI::Application::in_teardown())
     if (GUI::Application::in_teardown())
         return;
         return;
 
 
+    m_rect_when_windowless = rect();
+
     auto destroyed_window_ids = ConnectionToWindowServer::the().destroy_window(m_window_id);
     auto destroyed_window_ids = ConnectionToWindowServer::the().destroy_window(m_window_id);
     server_did_destroy();
     server_did_destroy();
 
 
@@ -468,7 +470,7 @@ void Window::handle_resize_event(ResizeEvent& event)
         m_pending_paint_event_rects.clear_with_capacity();
         m_pending_paint_event_rects.clear_with_capacity();
         m_pending_paint_event_rects.append({ {}, new_size });
         m_pending_paint_event_rects.append({ {}, new_size });
     }
     }
-    m_rect_when_windowless = { {}, new_size };
+    m_rect_when_windowless.set_size(new_size);
     if (m_main_widget)
     if (m_main_widget)
         m_main_widget->set_relative_rect({ {}, new_size });
         m_main_widget->set_relative_rect({ {}, new_size });
 }
 }