diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp index 85d6caef942..04eccbc02bf 100644 --- a/src/plugins/help/generalsettingspage.cpp +++ b/src/plugins/help/generalsettingspage.cpp @@ -137,6 +137,11 @@ QWidget *GeneralSettingsPage::createPage(QWidget *parent) << ' ' << m_ui.bookmarkGroupBox->title(); m_searchKeywords.remove(QLatin1Char('&')); } + + m_returnOnClose = manager->customValue(QLatin1String("ReturnOnClose"), + false).toBool(); + m_ui.m_returnOnClose->setChecked(m_returnOnClose); + return widget; } @@ -195,6 +200,13 @@ void GeneralSettingsPage::apply() emit contextHelpOptionChanged(); } + + const bool close = m_ui.m_returnOnClose->isChecked(); + if (m_returnOnClose != close) { + m_returnOnClose = close; + manager->setCustomValue(QLatin1String("ReturnOnClose"), close); + emit returnOnCloseChanged(); + } } void GeneralSettingsPage::setCurrentPage() diff --git a/src/plugins/help/generalsettingspage.h b/src/plugins/help/generalsettingspage.h index c35c350e5fc..87a93b5b130 100644 --- a/src/plugins/help/generalsettingspage.h +++ b/src/plugins/help/generalsettingspage.h @@ -59,6 +59,7 @@ public: signals: void fontChanged(); void startOptionChanged(); + void returnOnCloseChanged(); void contextHelpOptionChanged(); private slots: @@ -81,6 +82,8 @@ private: QString m_homePage; int m_contextOption; + bool m_returnOnClose; + QString m_searchKeywords; Ui::GeneralSettingsPage m_ui; }; diff --git a/src/plugins/help/generalsettingspage.ui b/src/plugins/help/generalsettingspage.ui index 40c9c707038..e317495c0d2 100644 --- a/src/plugins/help/generalsettingspage.ui +++ b/src/plugins/help/generalsettingspage.ui @@ -6,8 +6,8 @@ 0 0 - 498 - 304 + 491 + 360 @@ -356,6 +356,25 @@ + + + + Behaviour + + + + + + Switch to editor context after last help page is closed. + + + Return to editor on close last page + + + + + + diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 902885b2b0d..ca218cc68e8 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -164,6 +164,8 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) SLOT(fontChanged())); connect(m_generalSettingsPage, SIGNAL(contextHelpOptionChanged()), this, SLOT(contextHelpOptionChanged())); + connect(m_generalSettingsPage, SIGNAL(returnOnCloseChanged()), this, + SLOT(updateCloseButton())); connect(Core::HelpManager::instance(), SIGNAL(helpRequested(QUrl)), this, SLOT(handleHelpRequest(QUrl))); @@ -670,7 +672,11 @@ void HelpPlugin::updateSideBarSource(const QUrl &newUrl) void HelpPlugin::updateCloseButton() { - m_closeButton->setEnabled(OpenPagesManager::instance().pageCount() > 1); + Core::HelpManager *manager = Core::HelpManager::instance(); + const bool closeOnReturn = manager->customValue(QLatin1String("ReturnOnClose"), + false).toBool(); + m_closeButton->setEnabled((OpenPagesManager::instance().pageCount() > 1) + | closeOnReturn); } void HelpPlugin::fontChanged() diff --git a/src/plugins/help/openpagesmanager.cpp b/src/plugins/help/openpagesmanager.cpp index 98ee8d3c29b..7d6efefed11 100644 --- a/src/plugins/help/openpagesmanager.cpp +++ b/src/plugins/help/openpagesmanager.cpp @@ -45,6 +45,10 @@ #include +#include +#include +#include + using namespace Help::Internal; OpenPagesManager *OpenPagesManager::m_instance = 0; @@ -226,11 +230,22 @@ void OpenPagesManager::closeCurrentPage() { if (!m_openPagesWidget) return; + QModelIndexList indexes = m_openPagesWidget->selectionModel()->selectedRows(); if (indexes.isEmpty()) return; - Q_ASSERT(indexes.count() == 1); - removePage(indexes.first().row()); + + Core::HelpManager *manager = Core::HelpManager::instance(); + const bool closeOnReturn = manager->customValue(QLatin1String("ReturnOnClose"), + false).toBool(); + + if (m_model->rowCount() == 1 && closeOnReturn) { + Core::ModeManager *modeManager = Core::ModeManager::instance(); + modeManager->activateMode(Core::Constants::MODE_EDIT); + } else { + Q_ASSERT(indexes.count() == 1); + removePage(indexes.first().row()); + } } void OpenPagesManager::closePage(const QModelIndex &index)