From 9be4aeb55a7158c1c0d4a43366a818f08b4fbb70 Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Sun, 9 Jul 2023 15:21:04 +0900 Subject: [PATCH] Help: Store and restore size of TopicChooser The default size seems too small to use Change-Id: Ia8284e1e8b97ee7c76dc4d1ce807fec017ff10dd Reviewed-by: Eike Ziller --- .../coreplugin/dialogs/settingsdialog.cpp | 8 +++----- src/shared/help/topicchooser.cpp | 17 ++++++++++++++++- src/shared/help/topicchooser.h | 1 + 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index d4ff3250c4d..6970116ea3f 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -765,16 +765,14 @@ bool SettingsDialog::execDialog() m_running = true; m_finished = false; static const QLatin1String kPreferenceDialogSize("Core/PreferenceDialogSize"); - if (ICore::settings()->contains(kPreferenceDialogSize)) - resize(ICore::settings()->value(kPreferenceDialogSize).toSize()); - else - resize(kInitialWidth, kInitialHeight); + const QSize initialSize(kInitialWidth, kInitialHeight); + resize(ICore::settings()->value(kPreferenceDialogSize, initialSize).toSize()); exec(); m_running = false; m_instance = nullptr; ICore::settings()->setValueWithDefault(kPreferenceDialogSize, size(), - QSize(kInitialWidth, kInitialHeight)); + initialSize); // make sure that the current "single" instance is deleted // we can't delete right away, since we still access the m_applied member deleteLater(); diff --git a/src/shared/help/topicchooser.cpp b/src/shared/help/topicchooser.cpp index 93a4bf47be9..43d24cd1364 100644 --- a/src/shared/help/topicchooser.cpp +++ b/src/shared/help/topicchooser.cpp @@ -9,6 +9,8 @@ #include #include +#include + #include #include @@ -18,12 +20,18 @@ #include #include +const int kInitialWidth = 400; +const int kInitialHeight = 220; +const char kPreferenceDialogSize[] = "Core/TopicChooserSize"; + TopicChooser::TopicChooser(QWidget *parent, const QString &keyword, const QMultiMap &links) : QDialog(parent) , m_filterModel(new QSortFilterProxyModel(this)) { - resize(400, 220); + const QSize initialSize(kInitialWidth, kInitialHeight); + resize(Core::ICore::settings()->value(kPreferenceDialogSize, initialSize).toSize()); + setWindowTitle(::Help::Tr::tr("Choose Topic")); QStandardItemModel *model = new QStandardItemModel(this); @@ -70,6 +78,13 @@ TopicChooser::TopicChooser(QWidget *parent, const QString &keyword, this, &TopicChooser::setFilter); } +TopicChooser::~TopicChooser() +{ + Core::ICore::settings()->setValueWithDefault(kPreferenceDialogSize, + size(), + QSize(kInitialWidth, kInitialHeight)); +} + QUrl TopicChooser::link() const { if (m_activedIndex.isValid()) diff --git a/src/shared/help/topicchooser.h b/src/shared/help/topicchooser.h index 53954cad09f..feca98c85fd 100644 --- a/src/shared/help/topicchooser.h +++ b/src/shared/help/topicchooser.h @@ -24,6 +24,7 @@ class TopicChooser : public QDialog public: TopicChooser(QWidget *parent, const QString &keyword, const QMultiMap &links); + ~TopicChooser() override; QUrl link() const;