diff --git a/app/window/mainwindow/mainwindow.cpp b/app/window/mainwindow/mainwindow.cpp index f51fcd258..2a3a5a34b 100644 --- a/app/window/mainwindow/mainwindow.cpp +++ b/app/window/mainwindow/mainwindow.cpp @@ -180,6 +180,11 @@ void MainWindow::FolderOpen(Project *p, Item *i, bool floating) { ProjectPanel* panel = PanelManager::instance()->CreatePanel(this); + // Set custom name to distinguish it from regular ProjectPanels + panel->setObjectName(QStringLiteral("FolderPanel")); + + SetUniquePanelID(panel, folder_panels_); + panel->set_project(p); panel->set_root(i); @@ -508,6 +513,8 @@ T *MainWindow::AppendPanelInternal(QList& list) { T* panel = PanelManager::instance()->CreatePanel(this); + SetUniquePanelID(panel, list); + if (!list.isEmpty()) { tabifyDockWidget(list.last(), panel); } @@ -524,4 +531,11 @@ T *MainWindow::AppendPanelInternal(QList& list) return panel; } +template +void MainWindow::SetUniquePanelID(T *panel, const QList &list) +{ + // Set unique object name so it can be identified by QMainWindow's save and restore state functions + panel->setObjectName(panel->objectName().append(QString::number(list.size()))); +} + OLIVE_NAMESPACE_EXIT diff --git a/app/window/mainwindow/mainwindow.h b/app/window/mainwindow/mainwindow.h index d8de911f3..a0a315751 100644 --- a/app/window/mainwindow/mainwindow.h +++ b/app/window/mainwindow/mainwindow.h @@ -93,6 +93,9 @@ private: template T* AppendPanelInternal(QList& list); + template + void SetUniquePanelID(T* panel, const QList& list); + void RemoveTimelinePanel(TimelinePanel *panel); void RemoveProjectPanel(ProjectPanel* panel);