From a8a6a9e77480048f47b5848aea33582f83e02b84 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 6 Oct 2020 14:05:45 +0200 Subject: [PATCH] ProjectExplorer: Make project window state persistent Task-number: QTCREATORBUG-24690 Change-Id: Ia261fc5a98681676e8d67e6d840f2f48073cdbb2 Reviewed-by: hjk --- src/plugins/projectexplorer/projectwindow.cpp | 30 +++++++++++++++++++ src/plugins/projectexplorer/projectwindow.h | 6 ++++ 2 files changed, 36 insertions(+) diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index ce7a2db229a..f9da875f9ea 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -661,8 +661,38 @@ void ProjectWindow::activateProjectPanel(Utils::Id panelId) d->activateProjectPanel(panelId); } +void ProjectWindow::hideEvent(QHideEvent *event) +{ + savePersistentSettings(); + FancyMainWindow::hideEvent(event); +} + +void ProjectWindow::showEvent(QShowEvent *event) +{ + loadPersistentSettings(); + FancyMainWindow::showEvent(event); +} + ProjectWindow::~ProjectWindow() = default; +const char PROJECT_WINDOW_KEY[] = "ProjectExplorer.ProjectWindow"; + +void ProjectWindow::savePersistentSettings() const +{ + QSettings * const settings = ICore::settings(); + settings->beginGroup(PROJECT_WINDOW_KEY); + saveSettings(settings); + settings->endGroup(); +} + +void ProjectWindow::loadPersistentSettings() +{ + QSettings * const settings = ICore::settings(); + settings->beginGroup(PROJECT_WINDOW_KEY); + restoreSettings(settings); + settings->endGroup(); +} + QSize SelectorDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { QSize s = QStyledItemDelegate::sizeHint(option, index); diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index 09c242034c8..c048a4ac460 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -64,6 +64,12 @@ public: void activateProjectPanel(Utils::Id panelId); private: + void hideEvent(QHideEvent *event) override; + void showEvent(QShowEvent *event) override; + + void savePersistentSettings() const; + void loadPersistentSettings(); + const std::unique_ptr d; };