Просмотр исходного кода

LibGUI: Let GWindow::set_main_widget() take ownership of the widget

We were already doing this anyway, with ~GWindow() calling delete on
the main widget.
Andreas Kling 6 лет назад
Родитель
Сommit
dc572e31fa
1 измененных файлов с 3 добавлено и 3 удалено
  1. 3 3
      Libraries/LibGUI/GWindow.cpp

+ 3 - 3
Libraries/LibGUI/GWindow.cpp

@@ -36,10 +36,7 @@ GWindow::GWindow(CObject* parent)
 GWindow::~GWindow()
 {
     all_windows.remove(this);
-    if (m_main_widget)
-        delete m_main_widget;
     hide();
-
     if (all_windows.is_empty()) {
         GApplication::the().did_delete_last_window({});
     }
@@ -465,8 +462,11 @@ void GWindow::set_main_widget(GWidget* widget)
 {
     if (m_main_widget == widget)
         return;
+    if (m_main_widget)
+        remove_child(*m_main_widget);
     m_main_widget = widget;
     if (m_main_widget) {
+        add_child(*widget);
         auto new_window_rect = rect();
         if (m_main_widget->horizontal_size_policy() == SizePolicy::Fixed)
             new_window_rect.set_width(m_main_widget->preferred_size().width());