From 8a26e14efa0968caf7087a6bbf9dade78878e464 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 19 Apr 2020 01:42:51 +1000 Subject: [PATCH] mainwindow: set unique object name on all panels that are in a "series" --- app/window/mainwindow/mainwindow.cpp | 14 ++++++++++++++ app/window/mainwindow/mainwindow.h | 3 +++ 2 files changed, 17 insertions(+) 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);