diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index 908591c..c8d87f4 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/examples/emptydockarea/mainwindow.cpp b/examples/emptydockarea/mainwindow.cpp
index c8975a8..2dbe99c 100644
--- a/examples/emptydockarea/mainwindow.cpp
+++ b/examples/emptydockarea/mainwindow.cpp
@@ -56,7 +56,7 @@ CMainWindow::CMainWindow(QWidget *parent)
TableDockWidget->resize(250, 150);
TableDockWidget->setMinimumSize(200,150);
DockManager->addDockWidgetTabToArea(TableDockWidget, CentralDockArea);
- //auto TableArea = DockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, TableDockWidget);
+ auto TableArea = DockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, TableDockWidget);
ui->menuView->addAction(TableDockWidget->toggleViewAction());
table = new QTableWidget();
@@ -67,8 +67,7 @@ CMainWindow::CMainWindow(QWidget *parent)
TableDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);
TableDockWidget->resize(250, 150);
TableDockWidget->setMinimumSize(200,150);
- auto TableArea = DockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, TableDockWidget);
- //DockManager->addDockWidget(DockWidgetArea::BottomDockWidgetArea, TableDockWidget, TableArea);
+ DockManager->addDockWidget(DockWidgetArea::BottomDockWidgetArea, TableDockWidget, TableArea);
ui->menuView->addAction(TableDockWidget->toggleViewAction());
QTableWidget* propertiesTable = new QTableWidget();
diff --git a/src/DockManager.cpp b/src/DockManager.cpp
index 4b14f9a..42f61b8 100644
--- a/src/DockManager.cpp
+++ b/src/DockManager.cpp
@@ -505,6 +505,20 @@ CDockManager::CDockManager(QWidget *parent) :
//============================================================================
CDockManager::~CDockManager()
{
+ // fix memory leaks, see https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/issues/307
+ std::vector areas;
+ for ( int i = 0; i != dockAreaCount(); ++i )
+ {
+ areas.push_back( dockArea(i) );
+ }
+ for ( auto area : areas )
+ {
+ for ( auto widget : area->dockWidgets() )
+ delete widget;
+
+ delete area;
+ }
+
auto FloatingWidgets = d->FloatingWidgets;
for (auto FloatingWidget : FloatingWidgets)
{
@@ -912,6 +926,8 @@ void CDockManager::loadPerspectives(QSettings& Settings)
}
Settings.endArray();
+ Q_EMIT perspectiveListChanged();
+ Q_EMIT perspectiveListLoaded();
}
diff --git a/src/DockManager.h b/src/DockManager.h
index 9681d09..390e283 100644
--- a/src/DockManager.h
+++ b/src/DockManager.h
@@ -521,10 +521,17 @@ public Q_SLOTS:
Q_SIGNALS:
/**
- * This signal is emitted if the list of perspectives changed
+ * This signal is emitted if the list of perspectives changed.
+ * The list of perspectives changes if perspectives are added, removed
+ * or if the perspective list has been loaded
*/
void perspectiveListChanged();
+ /**
+ * This signal is emitted if the perspective list has been loaded
+ */
+ void perspectiveListLoaded();
+
/**
* This signal is emitted if perspectives have been removed
*/