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)