diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mainwindow.cpp | 24 | 
1 files changed, 16 insertions, 8 deletions
| diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 1036cbb..daf344d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -139,16 +139,21 @@ MainWindow::MainWindow(QWidget *parent) :  MainWindow::~MainWindow()  { +    // Release all dock widgets before deleting so we don't accidentally delete them +    // Also fixes that annoying crash when closing +    QList<QDockWidget*> allDockWidgets = findChildren<QDockWidget*>(); +    for(QDockWidget *w : allDockWidgets) { +        if(w->widget()) { +            w->widget()->setParent(0); +        } +    } +      delete ui;  }  void MainWindow::addTabbedDock(Qt::DockWidgetArea area, QWidget *widget)  { -    QDockWidget *dock = new QDockWidget(widget->windowTitle(), this); -    dock->setWidget(widget); -    addDockWidget(area, dock); - -    /* +    // create a list for the dock widgets we're appending to      QList<QDockWidget*> allDockWidgets = findChildren<QDockWidget*>();      QVector<QDockWidget*> areaDockWidgets;      for(QDockWidget *w : allDockWidgets) { @@ -157,12 +162,15 @@ void MainWindow::addTabbedDock(Qt::DockWidgetArea area, QWidget *widget)          }      } +    QDockWidget *dock = new QDockWidget(widget->windowTitle(), this); +    dock->setWidget(widget); +      if(areaDockWidgets.empty()) {          // no other widgets -        addDockWidget(area, widget); +        addDockWidget(area, dock);      } else { -        tabifyDockWidget(areaDockWidgets.last(), widget); -    }*/ +        tabifyDockWidget(areaDockWidgets.last(), dock); +    }  }  void MainWindow::newTab(const QUrl &url) | 
