aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhii Moroz <frost.asm@gmail.com>2016-09-17 18:31:56 +0300
committerSerhii Moroz <frost.asm@gmail.com>2017-03-09 08:19:54 +0000
commit69da534f99252d5f2b0f26b6637c51eca35dd6e0 (patch)
treeac92837999c8703d1ba077c11e874786fedfc31f
parent69f978efca60012e55a443a88bf86c1cae7be728 (diff)
TextEditor: add right sidebar
Task-number: QTCREATORBUG-9436 Change-Id: Ic0406758a30d52c22c58433f5f35305b798cb462 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: André Hartmann <aha_1980@gmx.de>
-rw-r--r--src/libs/utils/images/leftsidebaricon.png (renamed from src/libs/utils/images/sidebaricon.png)bin99 -> 99 bytes
-rw-r--r--src/libs/utils/images/leftsidebaricon@2x.png (renamed from src/libs/utils/images/sidebaricon@2x.png)bin104 -> 104 bytes
-rw-r--r--src/libs/utils/images/rightsidebaricon.pngbin0 -> 99 bytes
-rw-r--r--src/libs/utils/images/rightsidebaricon@2x.pngbin0 -> 104 bytes
-rw-r--r--src/libs/utils/utils.qrc6
-rw-r--r--src/libs/utils/utilsicons.cpp12
-rw-r--r--src/libs/utils/utilsicons.h6
-rw-r--r--src/plugins/bookmarks/bookmarkmanager.h2
-rw-r--r--src/plugins/classview/classviewnavigationwidgetfactory.cpp18
-rw-r--r--src/plugins/classview/classviewnavigationwidgetfactory.h6
-rw-r--r--src/plugins/coreplugin/coreconstants.h10
-rw-r--r--src/plugins/coreplugin/editmode.cpp4
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.cpp4
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.h5
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp95
-rw-r--r--src/plugins/coreplugin/mainwindow.h15
-rw-r--r--src/plugins/coreplugin/navigationsubwidget.cpp14
-rw-r--r--src/plugins/coreplugin/navigationsubwidget.h3
-rw-r--r--src/plugins/coreplugin/navigationwidget.cpp284
-rw-r--r--src/plugins/coreplugin/navigationwidget.h26
-rw-r--r--src/plugins/cppeditor/cppeditorplugin.cpp6
-rw-r--r--src/plugins/cppeditor/cpptypehierarchy.h2
-rw-r--r--src/plugins/debugger/debuggermainwindow.cpp2
-rw-r--r--src/plugins/help/helpwidget.cpp12
-rw-r--r--src/plugins/projectexplorer/foldernavigationwidget.cpp6
-rw-r--r--src/plugins/projectexplorer/foldernavigationwidget.h4
-rw-r--r--src/plugins/projectexplorer/projecttree.cpp3
-rw-r--r--src/plugins/projectexplorer/projecttreewidget.cpp6
-rw-r--r--src/plugins/projectexplorer/projecttreewidget.h4
-rw-r--r--src/plugins/qmldesigner/shortcutmanager.cpp2
-rw-r--r--src/plugins/texteditor/outlinefactory.cpp45
-rw-r--r--src/plugins/texteditor/outlinefactory.h8
-rw-r--r--src/tools/icons/qtcreatoricons.svg10
33 files changed, 408 insertions, 212 deletions
diff --git a/src/libs/utils/images/sidebaricon.png b/src/libs/utils/images/leftsidebaricon.png
index 413bed7c49..413bed7c49 100644
--- a/src/libs/utils/images/sidebaricon.png
+++ b/src/libs/utils/images/leftsidebaricon.png
Binary files differ
diff --git a/src/libs/utils/images/sidebaricon@2x.png b/src/libs/utils/images/leftsidebaricon@2x.png
index 81937400b4..81937400b4 100644
--- a/src/libs/utils/images/sidebaricon@2x.png
+++ b/src/libs/utils/images/leftsidebaricon@2x.png
Binary files differ
diff --git a/src/libs/utils/images/rightsidebaricon.png b/src/libs/utils/images/rightsidebaricon.png
new file mode 100644
index 0000000000..95df5c3b9b
--- /dev/null
+++ b/src/libs/utils/images/rightsidebaricon.png
Binary files differ
diff --git a/src/libs/utils/images/rightsidebaricon@2x.png b/src/libs/utils/images/rightsidebaricon@2x.png
new file mode 100644
index 0000000000..301227a2a9
--- /dev/null
+++ b/src/libs/utils/images/rightsidebaricon@2x.png
Binary files differ
diff --git a/src/libs/utils/utils.qrc b/src/libs/utils/utils.qrc
index 9c57ed3e12..5c1d478d1c 100644
--- a/src/libs/utils/utils.qrc
+++ b/src/libs/utils/utils.qrc
@@ -80,8 +80,10 @@
<file>images/replace_b.png</file>
<file>images/replace_b@2x.png</file>
<file>images/reset.png</file>
- <file>images/sidebaricon.png</file>
- <file>images/sidebaricon@2x.png</file>
+ <file>images/leftsidebaricon.png</file>
+ <file>images/leftsidebaricon@2x.png</file>
+ <file>images/rightsidebaricon.png</file>
+ <file>images/rightsidebaricon@2x.png</file>
<file>images/splitbutton_horizontal.png</file>
<file>images/splitbutton_horizontal@2x.png</file>
<file>images/undo.png</file>
diff --git a/src/libs/utils/utilsicons.cpp b/src/libs/utils/utilsicons.cpp
index 12dac5d37e..27db225e0c 100644
--- a/src/libs/utils/utilsicons.cpp
+++ b/src/libs/utils/utilsicons.cpp
@@ -131,10 +131,14 @@ const Icon CLEAN_TOOLBAR({
{QLatin1String(":/utils/images/clean_pane_small.png"), Theme::IconsBaseColor}});
const Icon RELOAD({
{QLatin1String(":/utils/images/reload_gray.png"), Theme::IconsBaseColor}});
-const Icon TOGGLE_SIDEBAR({
- {QLatin1String(":/utils/images/sidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
-const Icon TOGGLE_SIDEBAR_TOOLBAR({
- {QLatin1String(":/utils/images/sidebaricon.png"), Theme::IconsBaseColor}});
+const Icon TOGGLE_LEFT_SIDEBAR({
+ {QLatin1String(":/utils/images/leftsidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
+const Icon TOGGLE_LEFT_SIDEBAR_TOOLBAR({
+ {QLatin1String(":/utils/images/leftsidebaricon.png"), Theme::IconsBaseColor}});
+const Icon TOGGLE_RIGHT_SIDEBAR({
+ {QLatin1String(":/utils/images/rightsidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
+const Icon TOGGLE_RIGHT_SIDEBAR_TOOLBAR({
+ {QLatin1String(":/utils/images/rightsidebaricon.png"), Theme::IconsBaseColor}});
const Icon CLOSE_TOOLBAR({
{QLatin1String(":/utils/images/close.png"), Theme::IconsBaseColor}});
const Icon CLOSE_FOREGROUND({
diff --git a/src/libs/utils/utilsicons.h b/src/libs/utils/utilsicons.h
index b06a374728..2e3e083e19 100644
--- a/src/libs/utils/utilsicons.h
+++ b/src/libs/utils/utilsicons.h
@@ -81,8 +81,10 @@ QTCREATOR_UTILS_EXPORT extern const Icon MAGNIFIER;
QTCREATOR_UTILS_EXPORT extern const Icon CLEAN;
QTCREATOR_UTILS_EXPORT extern const Icon CLEAN_TOOLBAR;
QTCREATOR_UTILS_EXPORT extern const Icon RELOAD;
-QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_SIDEBAR;
-QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_SIDEBAR_TOOLBAR;
+QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_LEFT_SIDEBAR;
+QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_LEFT_SIDEBAR_TOOLBAR;
+QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_RIGHT_SIDEBAR;
+QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_RIGHT_SIDEBAR_TOOLBAR;
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_TOOLBAR;
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_FOREGROUND;
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_BACKGROUND;
diff --git a/src/plugins/bookmarks/bookmarkmanager.h b/src/plugins/bookmarks/bookmarkmanager.h
index 1a35f28400..c4404922d3 100644
--- a/src/plugins/bookmarks/bookmarkmanager.h
+++ b/src/plugins/bookmarks/bookmarkmanager.h
@@ -162,7 +162,7 @@ public:
BookmarkViewFactory(BookmarkManager *bm);
private:
- Core::NavigationView createWidget();
+ Core::NavigationView createWidget() override;
BookmarkManager *m_manager;
};
diff --git a/src/plugins/classview/classviewnavigationwidgetfactory.cpp b/src/plugins/classview/classviewnavigationwidgetfactory.cpp
index e8223796d0..2d35c67c70 100644
--- a/src/plugins/classview/classviewnavigationwidgetfactory.cpp
+++ b/src/plugins/classview/classviewnavigationwidgetfactory.cpp
@@ -70,33 +70,29 @@ Core::NavigationView NavigationWidgetFactory::createWidget()
*/
static QString settingsPrefix(int position)
{
- return QString::fromLatin1("ClassView/Treewidget.%1/FlatMode").arg(position);
+ return QString::fromLatin1("ClassView.Treewidget.%1.FlatMode").arg(position);
}
//! Flat mode settings
-void NavigationWidgetFactory::saveSettings(int position, QWidget *widget)
+void NavigationWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
{
NavigationWidget *pw = qobject_cast<NavigationWidget *>(widget);
QTC_ASSERT(pw, return);
// .beginGroup is not used - to prevent simultaneous access
- QString group = settingsPrefix(position);
-
- // Save settings
- Core::ICore::settings()->setValue(group, pw->flatMode());
+ QString settingsGroup = settingsPrefix(position);
+ settings->setValue(settingsGroup, pw->flatMode());
}
-void NavigationWidgetFactory::restoreSettings(int position, QWidget *widget)
+void NavigationWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
{
NavigationWidget *pw = qobject_cast<NavigationWidget *>(widget);
QTC_ASSERT(pw, return);
// .beginGroup is not used - to prevent simultaneous access
- QString group = settingsPrefix(position);
-
- // Load settings
- pw->setFlatMode(Core::ICore::settings()->value(group, false).toBool());
+ QString settingsGroup = settingsPrefix(position);
+ pw->setFlatMode(settings->value(settingsGroup, false).toBool());
}
} // namespace Internal
diff --git a/src/plugins/classview/classviewnavigationwidgetfactory.h b/src/plugins/classview/classviewnavigationwidgetfactory.h
index 8675760c74..31f664476d 100644
--- a/src/plugins/classview/classviewnavigationwidgetfactory.h
+++ b/src/plugins/classview/classviewnavigationwidgetfactory.h
@@ -38,13 +38,13 @@ public:
NavigationWidgetFactory();
//! \implements Core::INavigationWidgetFactory::createWidget
- Core::NavigationView createWidget();
+ Core::NavigationView createWidget() override;
//! \implements Core::INavigationWidgetFactory::saveSettings
- void saveSettings(int position, QWidget *widget);
+ void saveSettings(QSettings *settings, int position, QWidget *widget) override;
//! \implements Core::INavigationWidgetFactory::restoreSettings
- void restoreSettings(int position, QWidget *widget);
+ void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
};
} // namespace Internal
diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h
index 49d486e3db..78c7ae6011 100644
--- a/src/plugins/coreplugin/coreconstants.h
+++ b/src/plugins/coreplugin/coreconstants.h
@@ -89,13 +89,17 @@ const char PRINT[] = "QtCreator.Print";
const char EXIT[] = "QtCreator.Exit";
const char OPTIONS[] = "QtCreator.Options";
-const char TOGGLE_SIDEBAR[] = "QtCreator.ToggleSidebar";
+const char TOGGLE_LEFT_SIDEBAR[] = "QtCreator.ToggleLeftSidebar";
+const char TOGGLE_RIGHT_SIDEBAR[] = "QtCreator.ToggleRightSidebar";
const char TOGGLE_MODE_SELECTOR[] = "QtCreator.ToggleModeSelector";
const char TOGGLE_FULLSCREEN[] = "QtCreator.ToggleFullScreen";
const char THEMEOPTIONS[] = "QtCreator.ThemeOptions";
-const char TR_SHOW_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Show Sidebar");
-const char TR_HIDE_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Hide Sidebar");
+const char TR_SHOW_LEFT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Show Left Sidebar");
+const char TR_HIDE_LEFT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Hide Left Sidebar");
+
+const char TR_SHOW_RIGHT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Show Right Sidebar");
+const char TR_HIDE_RIGHT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Hide Right Sidebar");
const char MINIMIZE_WINDOW[] = "QtCreator.MinimizeWindow";
const char ZOOM_WINDOW[] = "QtCreator.ZoomWindow";
diff --git a/src/plugins/coreplugin/editmode.cpp b/src/plugins/coreplugin/editmode.cpp
index f7b42d221f..eb4522d65a 100644
--- a/src/plugins/coreplugin/editmode.cpp
+++ b/src/plugins/coreplugin/editmode.cpp
@@ -76,10 +76,12 @@ EditMode::EditMode() :
splitter->setStretchFactor(0, 3);
splitter->setStretchFactor(1, 0);
- m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT));
+ m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Left));
m_splitter->insertWidget(1, splitter);
+ m_splitter->insertWidget(2, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Right));
m_splitter->setStretchFactor(0, 0);
m_splitter->setStretchFactor(1, 1);
+ m_splitter->setStretchFactor(2, 0);
connect(ModeManager::instance(), &ModeManager::currentModeChanged,
this, &EditMode::grabEditorManager);
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.cpp b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
index 1bdf4acc43..06dfdb43bc 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.cpp
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
@@ -147,7 +147,7 @@ QKeySequence INavigationWidgetFactory::activationSequence() const
\sa INavigationWidgetFactory::restoreSettings()
*/
-void INavigationWidgetFactory::saveSettings(int /* position */, QWidget * /* widget */)
+void INavigationWidgetFactory::saveSettings(QSettings * /* settings */, int /* position */, QWidget * /* widget */)
{
}
@@ -157,6 +157,6 @@ void INavigationWidgetFactory::saveSettings(int /* position */, QWidget * /* wid
\sa INavigationWidgetFactory::saveSettings()
*/
-void INavigationWidgetFactory::restoreSettings(int /* position */, QWidget * /* widget */)
+void INavigationWidgetFactory::restoreSettings(QSettings * /* settings */, int /* position */, QWidget * /* widget */)
{
}
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.h b/src/plugins/coreplugin/inavigationwidgetfactory.h
index 940e0543b2..2205212232 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.h
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.h
@@ -32,6 +32,7 @@
#include <QKeySequence>
QT_BEGIN_NAMESPACE
+class QSettings;
class QToolButton;
class QWidget;
QT_END_NAMESPACE
@@ -69,8 +70,8 @@ public:
// Similar to how IView
virtual NavigationView createWidget() = 0;
- virtual void saveSettings(int position, QWidget *widget);
- virtual void restoreSettings(int position, QWidget *widget);
+ virtual void saveSettings(QSettings *settings, int position, QWidget *widget);
+ virtual void restoreSettings(QSettings *settings, int position, QWidget *widget);
private:
QString m_displayName;
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index d904037334..71e1f9a5a9 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -122,7 +122,8 @@ MainWindow::MainWindow() :
m_toolSettings(new ToolSettings),
m_mimeTypeSettings(new MimeTypeSettings),
m_systemEditor(new SystemEditor),
- m_toggleSideBarButton(new QToolButton)
+ m_toggleLeftSideBarButton(new QToolButton),
+ m_toggleRightSideBarButton(new QToolButton)
{
(void) new DocumentManager(this);
OutputPaneManager::create();
@@ -171,7 +172,8 @@ MainWindow::MainWindow() :
registerDefaultContainers();
registerDefaultActions();
- m_navigationWidget = new NavigationWidget(m_toggleSideBarAction);
+ m_leftNavigationWidget = new NavigationWidget(m_toggleLeftSideBarAction, Side::Left);
+ m_rightNavigationWidget = new NavigationWidget(m_toggleRightSideBarAction, Side::Right);
m_rightPaneWidget = new RightPaneWidget();
m_statusBarManager = new StatusBarManager(this);
@@ -184,8 +186,11 @@ MainWindow::MainWindow() :
m_progressManager->progressView()->setReferenceWidget(m_modeStack->statusBar());
connect(qApp, &QApplication::focusChanged, this, &MainWindow::updateFocusWidget);
- // Add a small Toolbutton for toggling the navigation widget
- statusBar()->insertPermanentWidget(0, m_toggleSideBarButton);
+
+ // Add small Toolbuttons for toggling the navigation widgets
+ statusBar()->insertPermanentWidget(0, m_toggleLeftSideBarButton);
+ int childsCount = statusBar()->findChildren<QWidget *>(QString(), Qt::FindDirectChildrenOnly).count();
+ statusBar()->insertPermanentWidget(childsCount - 1, m_toggleRightSideBarButton); // before QSizeGrip
// setUnifiedTitleAndToolBarOnMac(true);
//if (HostOsInfo::isAnyUnixHost())
@@ -200,22 +205,22 @@ MainWindow::MainWindow() :
this, &MainWindow::openDroppedFiles);
}
-void MainWindow::setSidebarVisible(bool visible)
+NavigationWidget *MainWindow::navigationWidget(Side side) const
{
- if (NavigationWidgetPlaceHolder::current()) {
- if (m_navigationWidget->isSuppressed() && visible) {
- m_navigationWidget->setShown(true);
- m_navigationWidget->setSuppressed(false);
- } else {
- m_navigationWidget->setShown(visible);
- }
- }
+ return side == Side::Left ? m_leftNavigationWidget : m_rightNavigationWidget;
}
-void MainWindow::setSuppressNavigationWidget(bool suppress)
+void MainWindow::setSidebarVisible(bool visible, Side side)
{
- if (NavigationWidgetPlaceHolder::current())
- m_navigationWidget->setSuppressed(suppress);
+ if (NavigationWidgetPlaceHolder::current(side)) {
+ NavigationWidget *navWidget = navigationWidget(side);
+ if (navWidget->isSuppressed() && visible) {
+ navWidget->setShown(true);
+ navWidget->setSuppressed(false);
+ } else {
+ navWidget->setShown(visible);
+ }
+ }
}
void MainWindow::setOverrideColor(const QColor &color)
@@ -281,8 +286,10 @@ MainWindow::~MainWindow()
PluginManager::removeObject(m_outputView);
delete m_outputView;
- delete m_navigationWidget;
- m_navigationWidget = nullptr;
+ delete m_leftNavigationWidget;
+ delete m_rightNavigationWidget;
+ m_leftNavigationWidget = nullptr;
+ m_rightNavigationWidget = nullptr;
delete m_editorManager;
m_editorManager = nullptr;
@@ -341,7 +348,8 @@ void MainWindow::extensionsInitialized()
m_statusBarManager->extensionsInitalized();
OutputPaneManager::instance()->init();
m_vcsManager->extensionsInitialized();
- m_navigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
+ m_leftNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
+ m_rightNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
readSettings();
updateContext();
@@ -373,7 +381,8 @@ void MainWindow::closeEvent(QCloseEvent *event)
saveWindowSettings();
- m_navigationWidget->closeSubWidgets();
+ m_leftNavigationWidget->closeSubWidgets();
+ m_rightNavigationWidget->closeSubWidgets();
event->accept();
}
@@ -678,21 +687,37 @@ void MainWindow::registerDefaultActions()
mwindow->addSeparator(Constants::G_WINDOW_SIZE);
}
- // Show Sidebar Action
- m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_SIDEBAR.icon(),
- QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR),
- this);
- m_toggleSideBarAction->setCheckable(true);
- cmd = ActionManager::registerAction(m_toggleSideBarAction, Constants::TOGGLE_SIDEBAR);
+ // Show Left Sidebar Action
+ m_toggleLeftSideBarAction = new QAction(Utils::Icons::TOGGLE_LEFT_SIDEBAR.icon(),
+ QCoreApplication::translate("Core", Constants::TR_SHOW_LEFT_SIDEBAR),
+ this);
+ m_toggleLeftSideBarAction->setCheckable(true);
+ cmd = ActionManager::registerAction(m_toggleLeftSideBarAction, Constants::TOGGLE_LEFT_SIDEBAR);
cmd->setAttribute(Command::CA_UpdateText);
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+0") : tr("Alt+0")));
- connect(m_toggleSideBarAction, &QAction::triggered, this, &MainWindow::setSidebarVisible);
- ProxyAction *toggleSideBarProxyAction =
- ProxyAction::proxyActionWithIcon(cmd->action(),
- Utils::Icons::TOGGLE_SIDEBAR_TOOLBAR.icon());
- m_toggleSideBarButton->setDefaultAction(toggleSideBarProxyAction);
+ connect(m_toggleLeftSideBarAction, &QAction::triggered,
+ this, [this](bool visible) { setSidebarVisible(visible, Side::Left); });
+ ProxyAction *toggleLeftSideBarProxyAction =
+ ProxyAction::proxyActionWithIcon(cmd->action(), Utils::Icons::TOGGLE_LEFT_SIDEBAR_TOOLBAR.icon());
+ m_toggleLeftSideBarButton->setDefaultAction(toggleLeftSideBarProxyAction);
+ mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
+ m_toggleLeftSideBarAction->setEnabled(false);
+
+ // Show Right Sidebar Action
+ m_toggleRightSideBarAction = new QAction(Utils::Icons::TOGGLE_RIGHT_SIDEBAR.icon(),
+ QCoreApplication::translate("Core", Constants::TR_SHOW_RIGHT_SIDEBAR),
+ this);
+ m_toggleRightSideBarAction->setCheckable(true);
+ cmd = ActionManager::registerAction(m_toggleRightSideBarAction, Constants::TOGGLE_RIGHT_SIDEBAR);
+ cmd->setAttribute(Command::CA_UpdateText);
+ cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+Meta+0") : tr("Ctrl+Shift+0")));
+ connect(m_toggleRightSideBarAction, &QAction::triggered,
+ this, [this](bool visible) { setSidebarVisible(visible, Side::Right); });
+ ProxyAction *toggleRightSideBarProxyAction =
+ ProxyAction::proxyActionWithIcon(cmd->action(), Utils::Icons::TOGGLE_RIGHT_SIDEBAR_TOOLBAR.icon());
+ m_toggleRightSideBarButton->setDefaultAction(toggleRightSideBarProxyAction);
mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
- m_toggleSideBarAction->setEnabled(false);
+ m_toggleRightSideBarButton->setEnabled(false);
// Show Mode Selector Action
m_toggleModeSelectorAction = new QAction(tr("Show Mode Selector"), this);
@@ -959,7 +984,8 @@ void MainWindow::readSettings()
settings->endGroup();
EditorManagerPrivate::readSettings();
- m_navigationWidget->restoreSettings(settings);
+ m_leftNavigationWidget->restoreSettings(settings);
+ m_rightNavigationWidget->restoreSettings(settings);
m_rightPaneWidget->readSettings(settings);
}
@@ -976,7 +1002,8 @@ void MainWindow::saveSettings()
DocumentManager::saveSettings();
ActionManager::saveSettings();
EditorManagerPrivate::saveSettings();
- m_navigationWidget->saveSettings(settings);
+ m_leftNavigationWidget->saveSettings(settings);
+ m_rightNavigationWidget->saveSettings(settings);
}
void MainWindow::saveWindowSettings()
diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h
index 190d2d3fbd..7a7042fd36 100644
--- a/src/plugins/coreplugin/mainwindow.h
+++ b/src/plugins/coreplugin/mainwindow.h
@@ -56,6 +56,7 @@ class MessageManager;
class ModeManager;
class ProgressManager;
class NavigationWidget;
+enum class Side;
class RightPaneWidget;
class SettingsDatabase;
class VcsManager;
@@ -102,8 +103,6 @@ public:
void updateAdditionalContexts(const Context &remove, const Context &add,
ICore::ContextPriority priority);
- void setSuppressNavigationWidget(bool suppress);
-
void setOverrideColor(const QColor &color);
QStringList additionalAboutInformation() const;
@@ -135,7 +134,8 @@ private:
void aboutQtCreator();
void aboutPlugins();
void updateFocusWidget(QWidget *old, QWidget *now);
- void setSidebarVisible(bool visible);
+ NavigationWidget *navigationWidget(Side side) const;
+ void setSidebarVisible(bool visible, Side side);
void destroyVersionDialog();
void openDroppedFiles(const QList<Utils::DropSupport::FileSpec> &files);
void restoreWindowState();
@@ -166,7 +166,8 @@ private:
ModeManager *m_modeManager = nullptr;
HelpManager *m_helpManager = nullptr;
FancyTabWidget *m_modeStack = nullptr;
- NavigationWidget *m_navigationWidget = nullptr;
+ NavigationWidget *m_leftNavigationWidget = nullptr;
+ NavigationWidget *m_rightNavigationWidget = nullptr;
RightPaneWidget *m_rightPaneWidget = nullptr;
StatusBarWidget *m_outputView = nullptr;
VersionDialog *m_versionDialog = nullptr;
@@ -190,11 +191,13 @@ private:
QAction *m_saveAllAction = nullptr;
QAction *m_exitAction = nullptr;
QAction *m_optionsAction = nullptr;
- QAction *m_toggleSideBarAction = nullptr;
+ QAction *m_toggleLeftSideBarAction = nullptr;
+ QAction *m_toggleRightSideBarAction = nullptr;
QAction *m_toggleModeSelectorAction = nullptr;
QAction *m_themeAction = nullptr;
- QToolButton *m_toggleSideBarButton = nullptr;
+ QToolButton *m_toggleLeftSideBarButton = nullptr;
+ QToolButton *m_toggleRightSideBarButton = nullptr;
QColor m_overrideColor;
QList<std::function<bool()>> m_preCloseListeners;
};
diff --git a/src/plugins/coreplugin/navigationsubwidget.cpp b/src/plugins/coreplugin/navigationsubwidget.cpp
index 25dc44e60c..0ed1a4ca22 100644
--- a/src/plugins/coreplugin/navigationsubwidget.cpp
+++ b/src/plugins/coreplugin/navigationsubwidget.cpp
@@ -30,6 +30,7 @@
#include "actionmanager/command.h"
#include "id.h"
+#include <coreplugin/icore.h>
#include <utils/styledbar.h>
#include <utils/utilsicons.h>
@@ -137,6 +138,7 @@ void NavigationSubWidget::comboBoxIndexChanged(int factoryIndex)
}
restoreSettings();
+ emit factoryIndexChanged(factoryIndex);
}
void NavigationSubWidget::populateSplitMenu()
@@ -167,14 +169,22 @@ void NavigationSubWidget::saveSettings()
{
if (!m_navigationWidget || !factory())
return;
- factory()->saveSettings(position(), m_navigationWidget);
+
+ QSettings *settings = Core::ICore::settings();
+ settings->beginGroup(m_parentWidget->settingsGroup());
+ factory()->saveSettings(settings, position(), m_navigationWidget);
+ settings->endGroup();
}
void NavigationSubWidget::restoreSettings()
{
if (!m_navigationWidget || !factory())
return;
- factory()->restoreSettings(position(), m_navigationWidget);
+
+ QSettings *settings = Core::ICore::settings();
+ settings->beginGroup(m_parentWidget->settingsGroup());
+ factory()->restoreSettings(settings, position(), m_navigationWidget);
+ settings->endGroup();
}
Core::Command *NavigationSubWidget::command(const QString &title) const
diff --git a/src/plugins/coreplugin/navigationsubwidget.h b/src/plugins/coreplugin/navigationsubwidget.h
index 545b0113d3..a1906a8a21 100644
--- a/src/plugins/coreplugin/navigationsubwidget.h
+++ b/src/plugins/coreplugin/navigationsubwidget.h
@@ -47,7 +47,7 @@ class NavigationSubWidget : public QWidget
{
Q_OBJECT
public:
- NavigationSubWidget(NavigationWidget *parentWidget, int position, int index);
+ NavigationSubWidget(NavigationWidget *parentWidget, int position, int factoryIndex);
virtual ~NavigationSubWidget();
INavigationWidgetFactory *factory();
@@ -71,6 +71,7 @@ public:
signals:
void splitMe(int factoryIndex);
void closeMe();
+ void factoryIndexChanged(int factoryIndex);
private:
void comboBoxIndexChanged(int);
diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp
index 287e519872..32ef0988df 100644
--- a/src/plugins/coreplugin/navigationwidget.cpp
+++ b/src/plugins/coreplugin/navigationwidget.cpp
@@ -34,6 +34,7 @@
#include "id.h"
#include "imode.h"
+#include <utils/qtcassert.h>
#include <utils/utilsicons.h>
#include <QCoreApplication>
@@ -49,15 +50,24 @@ Q_DECLARE_METATYPE(Core::INavigationWidgetFactory *)
namespace Core {
-NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::m_current = 0;
+NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::s_currentLeft = nullptr;
+NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::s_currentRight = nullptr;
-NavigationWidgetPlaceHolder* NavigationWidgetPlaceHolder::current()
+NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::current(Side side)
{
- return m_current;
+ return side == Side::Left ? s_currentLeft : s_currentRight;
}
-NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, QWidget *parent)
- :QWidget(parent), m_mode(mode)
+void NavigationWidgetPlaceHolder::setCurrent(Side side, NavigationWidgetPlaceHolder *navWidget)
+{
+ if (side == Side::Left)
+ s_currentLeft = navWidget;
+ else
+ s_currentRight = navWidget;
+}
+
+NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, Side side, QWidget *parent)
+ :QWidget(parent), m_mode(mode), m_side(side)
{
setLayout(new QVBoxLayout);
layout()->setMargin(0);
@@ -67,9 +77,9 @@ NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, QWidget *paren
NavigationWidgetPlaceHolder::~NavigationWidgetPlaceHolder()
{
- if (m_current == this) {
- if (NavigationWidget *nw = NavigationWidget::instance()) {
- nw->setParent(0);
+ if (NavigationWidgetPlaceHolder::current(m_side) == this) {
+ if (NavigationWidget *nw = NavigationWidget::instance(m_side)) {
+ nw->setParent(nullptr);
nw->hide();
}
}
@@ -84,12 +94,20 @@ void NavigationWidgetPlaceHolder::applyStoredSize(int width)
QList<int> sizes = splitter->sizes();
int index = splitter->indexOf(this);
int diff = width - sizes.at(index);
- int adjust = sizes.count() > 1 ? (diff / (sizes.count() - 1)) : 0;
+
+ int count = sizes.count();
+ for (int i = 0; i < sizes.count(); ++i) {
+ if (qobject_cast<NavigationWidgetPlaceHolder *>(splitter->widget(i)))
+ --count;
+ }
+
+ int adjust = count > 1 ? (diff / (count - 1)) : 0;
for (int i = 0; i < sizes.count(); ++i) {
- if (i != index)
+ if (!qobject_cast<NavigationWidgetPlaceHolder *>(splitter->widget(i)))
sizes[i] += adjust;
}
- sizes[index]= width;
+
+ sizes[index] = width;
splitter->setSizes(sizes);
} else {
QSize s = size();
@@ -107,16 +125,18 @@ void NavigationWidgetPlaceHolder::applyStoredSize(int width)
// And that the parent of the NavigationWidget gets the correct parent
void NavigationWidgetPlaceHolder::currentModeAboutToChange(Id mode)
{
- NavigationWidget *navigationWidget = NavigationWidget::instance();
+ NavigationWidget *navigationWidget = NavigationWidget::instance(m_side);
+ NavigationWidgetPlaceHolder *current = NavigationWidgetPlaceHolder::current(m_side);
- if (m_current == this) {
- m_current = 0;
- navigationWidget->setParent(0);
+ if (current == this) {
+ setCurrent(m_side, nullptr);
+ navigationWidget->setParent(nullptr);
navigationWidget->hide();
- navigationWidget->placeHolderChanged(m_current);
+ navigationWidget->placeHolderChanged(nullptr);
}
+
if (m_mode == mode) {
- m_current = this;
+ setCurrent(m_side, this);
int width = navigationWidget->storedWidth();
@@ -125,13 +145,19 @@ void NavigationWidgetPlaceHolder::currentModeAboutToChange(Id mode)
applyStoredSize(width);
setVisible(navigationWidget->isShown());
- navigationWidget->placeHolderChanged(m_current);
+ navigationWidget->placeHolderChanged(this);
}
}
+struct ActivationInfo {
+ Side side;
+ int position;
+};
+using ActivationsMap = QHash<Id, ActivationInfo>;
+
struct NavigationWidgetPrivate
{
- explicit NavigationWidgetPrivate(QAction *toggleSideBarAction);
+ explicit NavigationWidgetPrivate(QAction *toggleSideBarAction, Side side);
~NavigationWidgetPrivate() { delete m_factoryModel; }
QList<Internal::NavigationSubWidget *> m_subWidgets;
@@ -142,55 +168,97 @@ struct NavigationWidgetPrivate
bool m_shown;
bool m_suppressed;
int m_width;
- static NavigationWidget* m_instance;
QAction *m_toggleSideBarAction; // does not take ownership
+ Side m_side;
+
+ static NavigationWidget *s_instanceLeft;
+ static NavigationWidget *s_instanceRight;
+
+ static ActivationsMap s_activationsMap;
+
+ static void updateActivationsMap(Id activatedId, const ActivationInfo &activationInfo);
+ static void removeFromActivationsMap(const ActivationInfo &activationInfo);
};
-NavigationWidgetPrivate::NavigationWidgetPrivate(QAction *toggleSideBarAction) :
+NavigationWidgetPrivate::NavigationWidgetPrivate(QAction *toggleSideBarAction, Side side) :
m_factoryModel(new QStandardItemModel),
m_shown(true),
m_suppressed(false),
m_width(0),
- m_toggleSideBarAction(toggleSideBarAction)
+ m_toggleSideBarAction(toggleSideBarAction),
+ m_side(side)
+{
+}
+
+void NavigationWidgetPrivate::updateActivationsMap(Id activatedId, const ActivationInfo &activationInfo)
{
+ s_activationsMap.insert(activatedId, activationInfo);
}
-NavigationWidget *NavigationWidgetPrivate::m_instance = 0;
+NavigationWidget *NavigationWidgetPrivate::s_instanceLeft = nullptr;
+NavigationWidget *NavigationWidgetPrivate::s_instanceRight = nullptr;
+ActivationsMap NavigationWidgetPrivate::s_activationsMap;
-NavigationWidget::NavigationWidget(QAction *toggleSideBarAction) :
- d(new NavigationWidgetPrivate(toggleSideBarAction))
+NavigationWidget::NavigationWidget(QAction *toggleSideBarAction, Side side) :
+ d(new NavigationWidgetPrivate(toggleSideBarAction, side))
{
d->m_factoryModel->setSortRole(FactoryPriorityRole);
setOrientation(Qt::Vertical);
- d->m_instance = this;
+
+ if (side == Side::Left)
+ d->s_instanceLeft = this;
+ else
+ d->s_instanceRight = this;
}
NavigationWidget::~NavigationWidget()
{
- NavigationWidgetPrivate::m_instance = 0;
+ if (d->m_side == Side::Left)
+ NavigationWidgetPrivate::s_instanceLeft = nullptr;
+ else
+ NavigationWidgetPrivate::s_instanceRight = nullptr;
+
delete d;
}
-NavigationWidget *NavigationWidget::instance()
+NavigationWidget *NavigationWidget::instance(Side side)
+{
+ return side == Side::Left ? NavigationWidgetPrivate::s_instanceLeft
+ : NavigationWidgetPrivate::s_instanceRight;
+}
+
+QWidget *NavigationWidget::activateSubWidget(Id factoryId, Side fallbackSide)
{
- return NavigationWidgetPrivate::m_instance;
+ NavigationWidget *navigationWidget = NavigationWidget::instance(fallbackSide);
+ int preferredPosition = -1;
+
+ if (NavigationWidgetPrivate::s_activationsMap.contains(factoryId)) {
+ const ActivationInfo info = NavigationWidgetPrivate::s_activationsMap.value(factoryId);
+ navigationWidget = NavigationWidget::instance(info.side);
+ preferredPosition = info.position;
+ }
+
+ navigationWidget->activateSubWidget(factoryId, preferredPosition);
+ return navigationWidget;
}
void NavigationWidget::setFactories(const QList<INavigationWidgetFactory *> &factories)
{
Context navicontext(Constants::C_NAVIGATION_PANE);
-
foreach (INavigationWidgetFactory *factory, factories) {
const Id id = factory->id();
- QAction *action = new QAction(tr("Activate %1 View").arg(factory->displayName()), this);
- d->m_actionMap.insert(action, id);
- connect(action, &QAction::triggered,
- this, [this, action]() { activateSubWidget(d->m_actionMap[action]); });
-
- Command *cmd = ActionManager::registerAction(action,
- id.withPrefix("QtCreator.Sidebar."), navicontext);
- cmd->setDefaultKeySequence(factory->activationSequence());
- d->m_commandMap.insert(id, cmd);
+ const Id actionId = id.withPrefix("QtCreator.Sidebar.");
+
+ if (!ActionManager::command(actionId)) {
+ QAction *action = new QAction(tr("Activate %1 View").arg(factory->displayName()), this);
+ d->m_actionMap.insert(action, id);
+ connect(action, &QAction::triggered, this, [this, action]() {
+ NavigationWidget::activateSubWidget(d->m_actionMap[action], Side::Left);
+ });
+ Command *cmd = ActionManager::registerAction(action, actionId, navicontext);
+ cmd->setDefaultKeySequence(factory->activationSequence());
+ d->m_commandMap.insert(id, cmd);
+ }
QStandardItem *newRow = new QStandardItem(factory->displayName());
newRow->setData(qVariantFromValue(factory), FactoryObjectRole);
@@ -202,6 +270,13 @@ void NavigationWidget::setFactories(const QList<INavigationWidgetFactory *> &fac
updateToggleText();
}
+QString NavigationWidget::settingsGroup() const
+{
+ const QString side(d->m_side == Side::Left ? QStringLiteral("Left")
+ : QStringLiteral("Right"));
+ return QStringLiteral("Navigation%1").arg(side);
+}
+
int NavigationWidget::storedWidth()
{
return d->m_width;
@@ -216,12 +291,13 @@ void NavigationWidget::updateToggleText()
{
bool haveData = d->m_factoryModel->rowCount();
d->m_toggleSideBarAction->setVisible(haveData);
- d->m_toggleSideBarAction->setEnabled(haveData && NavigationWidgetPlaceHolder::m_current);
+ d->m_toggleSideBarAction->setEnabled(haveData && NavigationWidgetPlaceHolder::current(d->m_side));
- if (isShown())
- d->m_toggleSideBarAction->setToolTip(QCoreApplication::translate("Core", Constants::TR_HIDE_SIDEBAR));
- else
- d->m_toggleSideBarAction->setToolTip(QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR));
+ const char *trToolTip = d->m_side == Side::Left
+ ? (isShown() ? Constants::TR_HIDE_LEFT_SIDEBAR : Constants::TR_SHOW_LEFT_SIDEBAR)
+ : (isShown() ? Constants::TR_HIDE_RIGHT_SIDEBAR : Constants::TR_SHOW_RIGHT_SIDEBAR);
+
+ d->m_toggleSideBarAction->setToolTip(QCoreApplication::translate("Core", trToolTip));
}
void NavigationWidget::placeHolderChanged(NavigationWidgetPlaceHolder *holder)
@@ -237,28 +313,33 @@ void NavigationWidget::resizeEvent(QResizeEvent *re)
MiniSplitter::resizeEvent(re);
}
-Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position,int index)
+Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position, int factoryIndex)
{
for (int pos = position + 1; pos < d->m_subWidgets.size(); ++pos) {
- d->m_subWidgets.at(pos)->setPosition(pos + 1);
+ Internal::NavigationSubWidget *nsw = d->m_subWidgets.at(pos);
+ nsw->setPosition(pos + 1);
+ NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, pos + 1});
}
if (!d->m_subWidgets.isEmpty()) // Make all icons the bottom icon
d->m_subWidgets.at(0)->setCloseIcon(Utils::Icons::CLOSE_SPLIT_BOTTOM.icon());
- Internal::NavigationSubWidget *nsw = new Internal::NavigationSubWidget(this, position, index);
- connect(nsw, &Internal::NavigationSubWidget::splitMe,
- this, &NavigationWidget::splitSubWidget);
+ Internal::NavigationSubWidget *nsw = new Internal::NavigationSubWidget(this, position, factoryIndex);
+ connect(nsw, &Internal::NavigationSubWidget::splitMe, this, &NavigationWidget::splitSubWidget);
connect(nsw, &Internal::NavigationSubWidget::closeMe, this, &NavigationWidget::closeSubWidget);
+ connect(nsw, &Internal::NavigationSubWidget::factoryIndexChanged,
+ this, &NavigationWidget::onSubWidgetFactoryIndexChanged);
insertWidget(position, nsw);
+
d->m_subWidgets.insert(position, nsw);
d->m_subWidgets.at(0)->setCloseIcon(d->m_subWidgets.size() == 1
? Utils::Icons::CLOSE_SPLIT_LEFT.icon()
: Utils::Icons::CLOSE_SPLIT_TOP.icon());
+ NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, position});
return nsw;
}
-QWidget *NavigationWidget::activateSubWidget(Id factoryId)
+QWidget *NavigationWidget::activateSubWidget(Id factoryId, int preferredPosition)
{
setShown(true);
foreach (Internal::NavigationSubWidget *subWidget, d->m_subWidgets) {
@@ -271,10 +352,13 @@ QWidget *NavigationWidget::activateSubWidget(Id factoryId)
int index = factoryIndex(factoryId);
if (index >= 0) {
- d->m_subWidgets.first()->setFactoryIndex(index);
- d->m_subWidgets.first()->setFocusWidget();
+ bool preferredIndexValid = 0 <= preferredPosition && preferredPosition < d->m_subWidgets.count();
+ const int activationIndex = preferredIndexValid ? preferredPosition : 0;
+ Internal::NavigationSubWidget *subWidget = d->m_subWidgets.at(activationIndex);
+ subWidget->setFactoryIndex(index);
+ subWidget->setFocusWidget();
ICore::raiseWindow(this);
- return d->m_subWidgets.first()->widget();
+ return subWidget->widget();
}
return nullptr;
}
@@ -291,6 +375,14 @@ void NavigationWidget::closeSubWidget()
if (d->m_subWidgets.count() != 1) {
Internal::NavigationSubWidget *subWidget = qobject_cast<Internal::NavigationSubWidget *>(sender());
subWidget->saveSettings();
+
+ int position = d->m_subWidgets.indexOf(subWidget);
+ for (int pos = position + 1; pos < d->m_subWidgets.size(); ++pos) {
+ Internal::NavigationSubWidget *nsw = d->m_subWidgets.at(pos);
+ nsw->setPosition(pos - 1);
+ NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, pos - 1});
+ }
+
d->m_subWidgets.removeOne(subWidget);
subWidget->hide();
subWidget->deleteLater();
@@ -311,10 +403,18 @@ void NavigationWidget::saveSettings(QSettings *settings)
d->m_subWidgets.at(i)->saveSettings();
viewIds.append(d->m_subWidgets.at(i)->factory()->id().toString());
}
- settings->setValue(QLatin1String("Navigation/Views"), viewIds);
- settings->setValue(QLatin1String("Navigation/Visible"), isShown());
- settings->setValue(QLatin1String("Navigation/VerticalPosition"), saveState());
- settings->setValue(QLatin1String("Navigation/Width"), d->m_width);
+ settings->setValue(settingsKey("Views"), viewIds);
+ settings->setValue(settingsKey("Visible"), isShown());
+ settings->setValue(settingsKey("VerticalPosition"), saveState());
+ settings->setValue(settingsKey("Width"), d->m_width);
+
+ const QString activationKey = QStringLiteral("ActivationPosition.");
+ const auto keys = NavigationWidgetPrivate::s_activationsMap.keys();
+ for (const auto &factoryId : keys) {
+ const auto &info = NavigationWidgetPrivate::s_activationsMap[factoryId];
+ if (info.side == d->m_side)
+ settings->setValue(settingsKey(activationKey + factoryId.toString()), info.position);
+ }
}
void NavigationWidget::restoreSettings(QSettings *settings)
@@ -325,17 +425,19 @@ void NavigationWidget::restoreSettings(QSettings *settings)
return;
}
- int version = settings->value(QLatin1String("Navigation/Version"), 1).toInt();
- QStringList viewIds = settings->value(QLatin1String("Navigation/Views"),
- QStringList(QLatin1String("Projects"))).toStringList();
+ const bool isLeftSide = d->m_side == Side::Left;
+ QLatin1String defaultFirstView = isLeftSide ? QLatin1String("Projects") : QLatin1String("Outline");
+ QStringList viewIds = settings->value(settingsKey("Views"), QStringList(defaultFirstView)).toStringList();
bool restoreSplitterState = true;
+ int version = settings->value(settingsKey("Version"), 1).toInt();
if (version == 1) {
- if (!viewIds.contains(QLatin1String("Open Documents"))) {
- viewIds += QLatin1String("Open Documents");
+ QLatin1String defaultSecondView = isLeftSide ? QLatin1String("Open Documents") : QLatin1String("Bookmarks");
+ if (!viewIds.contains(defaultSecondView)) {
+ viewIds += defaultSecondView;
restoreSplitterState = false;
}
- settings->setValue(QLatin1String("Navigation/Version"), 2);
+ settings->setValue(settingsKey("Version"), 2);
}
int position = 0;
@@ -351,13 +453,13 @@ void NavigationWidget::restoreSettings(QSettings *settings)
}
if (d->m_subWidgets.isEmpty())
- // Make sure we have at least the projects widget
- insertSubItem(0, qMax(0, factoryIndex("Projects")));
+ // Make sure we have at least the projects widget or outline widget
+ insertSubItem(0, qMax(0, factoryIndex(defaultFirstView.data())));
- setShown(settings->value(QLatin1String("Navigation/Visible"), true).toBool());
+ setShown(settings->value(settingsKey("Visible"), isLeftSide).toBool());
- if (restoreSplitterState && settings->contains(QLatin1String("Navigation/VerticalPosition"))) {
- restoreState(settings->value(QLatin1String("Navigation/VerticalPosition")).toByteArray());
+ if (restoreSplitterState && settings->contains(settingsKey("VerticalPosition"))) {
+ restoreState(settings->value(settingsKey("VerticalPosition")).toByteArray());
} else {
QList<int> sizes;
sizes += 256;
@@ -366,13 +468,27 @@ void NavigationWidget::restoreSettings(QSettings *settings)
setSizes(sizes);
}
- d->m_width = settings->value(QLatin1String("Navigation/Width"), 240).toInt();
+ d->m_width = settings->value(settingsKey("Width"), 240).toInt();
if (d->m_width < 40)
d->m_width = 40;
// Apply
- if (NavigationWidgetPlaceHolder::m_current)
- NavigationWidgetPlaceHolder::m_current->applyStoredSize(d->m_width);
+ if (NavigationWidgetPlaceHolder::current(d->m_side))
+ NavigationWidgetPlaceHolder::current(d->m_side)->applyStoredSize(d->m_width);
+
+ // Restore last activation positions
+ settings->beginGroup(settingsGroup());
+ const QString activationKey = QStringLiteral("ActivationPosition.");
+ const auto keys = settings->allKeys();
+ for (const QString &key : keys) {
+ if (!key.startsWith(activationKey))
+ continue;
+
+ int position = settings->value(key).toInt();
+ Id factoryId = Id::fromString(key.mid(activationKey.length()));
+ NavigationWidgetPrivate::updateActivationsMap(factoryId, {d->m_side, position});
+ }
+ settings->endGroup();
}
void NavigationWidget::closeSubWidgets()
@@ -390,9 +506,11 @@ void NavigationWidget::setShown(bool b)
return;
bool haveData = d->m_factoryModel->rowCount();
d->m_shown = b;
- if (NavigationWidgetPlaceHolder::m_current) {
- NavigationWidgetPlaceHolder::m_current->setVisible(d->m_shown && !d->m_suppressed && haveData);
- d->m_toggleSideBarAction->setChecked(d->m_shown && !d->m_suppressed && haveData);
+ NavigationWidgetPlaceHolder *current = NavigationWidgetPlaceHolder::current(d->m_side);
+ if (current) {
+ bool visible = d->m_shown && !d->m_suppressed && haveData;
+ current->setVisible(visible);
+ d->m_toggleSideBarAction->setChecked(visible);
} else {
d->m_toggleSideBarAction->setChecked(false);
}
@@ -414,8 +532,8 @@ void NavigationWidget::setSuppressed(bool b)
if (d->m_suppressed == b)
return;
d->m_suppressed = b;
- if (NavigationWidgetPlaceHolder::m_current)
- NavigationWidgetPlaceHolder::m_current->setVisible(d->m_shown && !d->m_suppressed);
+ if (NavigationWidgetPlaceHolder::current(d->m_side))
+ NavigationWidgetPlaceHolder::current(d->m_side)->setVisible(d->m_shown && !d->m_suppressed);
}
int NavigationWidget::factoryIndex(Id id)
@@ -427,6 +545,20 @@ int NavigationWidget::factoryIndex(Id id)
return -1;
}
+QString NavigationWidget::settingsKey(const QString &key) const
+{
+ return QStringLiteral("%1/%2").arg(settingsGroup(), key);
+}
+
+void NavigationWidget::onSubWidgetFactoryIndexChanged(int factoryIndex)
+{
+ Q_UNUSED(factoryIndex);
+ Internal::NavigationSubWidget *subWidget = qobject_cast<Internal::NavigationSubWidget *>(sender());
+ QTC_ASSERT(subWidget, return);
+ Id factoryId = subWidget->factory()->id();
+ NavigationWidgetPrivate::updateActivationsMap(factoryId, {d->m_side, subWidget->position()});
+}
+
QHash<Id, Command *> NavigationWidget::commandMap() const
{
return d->m_commandMap;
diff --git a/src/plugins/coreplugin/navigationwidget.h b/src/plugins/coreplugin/navigationwidget.h
index 1aff5880bc..08d2e29f91 100644
--- a/src/plugins/coreplugin/navigationwidget.h
+++ b/src/plugins/coreplugin/navigationwidget.h
@@ -43,22 +43,30 @@ class NavigationWidget;
struct NavigationWidgetPrivate;
namespace Internal { class NavigationSubWidget; }
+enum class Side {
+ Left,
+ Right
+};
+
class CORE_EXPORT NavigationWidgetPlaceHolder : public QWidget
{
Q_OBJECT
friend class Core::NavigationWidget;
public:
- explicit NavigationWidgetPlaceHolder(Id mode, QWidget *parent = 0);
+ explicit NavigationWidgetPlaceHolder(Id mode, Side side, QWidget *parent = 0);
virtual ~NavigationWidgetPlaceHolder();
- static NavigationWidgetPlaceHolder* current();
+ static NavigationWidgetPlaceHolder *current(Side side);
+ static void setCurrent(Side side, NavigationWidgetPlaceHolder *navWidget);
void applyStoredSize(int width);
private:
void currentModeAboutToChange(Id mode);
Id m_mode;
- static NavigationWidgetPlaceHolder* m_current;
+ Side m_side;
+ static NavigationWidgetPlaceHolder *s_currentLeft;
+ static NavigationWidgetPlaceHolder *s_currentRight;
};
class CORE_EXPORT NavigationWidget : public MiniSplitter
@@ -72,15 +80,16 @@ public:
FactoryPriorityRole
};
- explicit NavigationWidget(QAction *toggleSideBarAction);
+ explicit NavigationWidget(QAction *toggleSideBarAction, Side side);
virtual ~NavigationWidget();
void setFactories(const QList<INavigationWidgetFactory*> &factories);
+ QString settingsGroup() const;
void saveSettings(QSettings *settings);
void restoreSettings(QSettings *settings);
- QWidget *activateSubWidget(Id factoryId);
+ QWidget *activateSubWidget(Id factoryId, int preferredPosition);
void closeSubWidgets();
bool isShown() const;
@@ -89,7 +98,8 @@ public:
bool isSuppressed() const;
void setSuppressed(bool b);
- static NavigationWidget* instance();
+ static NavigationWidget *instance(Side side);
+ static QWidget *activateSubWidget(Id factoryId, Side fallbackSide);
int storedWidth();
@@ -106,8 +116,10 @@ private:
void splitSubWidget(int factoryIndex);
void closeSubWidget();
void updateToggleText();
- Internal::NavigationSubWidget *insertSubItem(int position, int index);
+ Internal::NavigationSubWidget *insertSubItem(int position, int factoryIndex);
int factoryIndex(Id id);
+ QString settingsKey(const QString &key) const;
+ void onSubWidgetFactoryIndexChanged(int factoryIndex);
NavigationWidgetPrivate *d;
};
diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp
index 39b4fc0f2e..0febf579a6 100644
--- a/src/plugins/cppeditor/cppeditorplugin.cpp
+++ b/src/plugins/cppeditor/cppeditorplugin.cpp
@@ -366,8 +366,7 @@ QList<QObject *> CppEditorPlugin::createTestObjects() const
void CppEditorPlugin::openTypeHierarchy()
{
if (currentCppEditorWidget()) {
- NavigationWidget *navigation = NavigationWidget::instance();
- navigation->activateSubWidget(Constants::TYPE_HIERARCHY_ID);
+ NavigationWidget::activateSubWidget(Constants::TYPE_HIERARCHY_ID, Side::Left);
emit typeHierarchyRequested();
}
}
@@ -375,8 +374,7 @@ void CppEditorPlugin::openTypeHierarchy()
void CppEditorPlugin::openIncludeHierarchy()
{
if (currentCppEditorWidget()) {
- NavigationWidget *navigation = NavigationWidget::instance();
- navigation->activateSubWidget(Id(Constants::INCLUDE_HIERARCHY_ID));
+ NavigationWidget::activateSubWidget(Constants::INCLUDE_HIERARCHY_ID, Side::Left);
emit includeHierarchyRequested();
}
}
diff --git a/src/plugins/cppeditor/cpptypehierarchy.h b/src/plugins/cppeditor/cpptypehierarchy.h
index c2f9dffa44..9d9f4031dd 100644
--- a/src/plugins/cppeditor/cpptypehierarchy.h
+++ b/src/plugins/cppeditor/cpptypehierarchy.h
@@ -104,7 +104,7 @@ class CppTypeHierarchyFactory : public Core::INavigationWidgetFactory
public:
CppTypeHierarchyFactory();
- virtual Core::NavigationView createWidget();
+ Core::NavigationView createWidget() override;
};
} // namespace Internal
diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp
index 0aa6c7a23f..2909e4ae70 100644
--- a/src/plugins/debugger/debuggermainwindow.cpp
+++ b/src/plugins/debugger/debuggermainwindow.cpp
@@ -258,7 +258,7 @@ QWidget *createModeWindow(const Core::Id &mode, DebuggerMainWindow *mainWindow)
// Navigation and right-side window.
auto splitter = new MiniSplitter;
splitter->setFocusProxy(mainWindow->centralWidgetStack());
- splitter->addWidget(new NavigationWidgetPlaceHolder(mode));
+ splitter->addWidget(new NavigationWidgetPlaceHolder(mode, Side::Left));
splitter->addWidget(mainWindowSplitter);
splitter->setStretchFactor(0, 0);
splitter->setStretchFactor(1, 1);
diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp
index d1ce0ac3c7..8951536cfe 100644
--- a/src/plugins/help/helpwidget.cpp
+++ b/src/plugins/help/helpwidget.cpp
@@ -127,19 +127,19 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing
}
if (style != SideBarWidget) {
- m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_SIDEBAR_TOOLBAR.icon(),
- QCoreApplication::translate("Core", Core::Constants::TR_SHOW_SIDEBAR),
+ m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_LEFT_SIDEBAR_TOOLBAR.icon(),
+ QCoreApplication::translate("Core", Core::Constants::TR_SHOW_LEFT_SIDEBAR),
toolBar);
m_toggleSideBarAction->setCheckable(true);
m_toggleSideBarAction->setChecked(false);
cmd = Core::ActionManager::registerAction(m_toggleSideBarAction,
- Core::Constants::TOGGLE_SIDEBAR, context);
+ Core::Constants::TOGGLE_LEFT_SIDEBAR, context);
connect(m_toggleSideBarAction, &QAction::toggled, m_toggleSideBarAction,
[this](bool checked) {
m_toggleSideBarAction->setText(
QCoreApplication::translate("Core",
- checked ? Core::Constants::TR_HIDE_SIDEBAR
- : Core::Constants::TR_SHOW_SIDEBAR));
+ checked ? Core::Constants::TR_HIDE_LEFT_SIDEBAR
+ : Core::Constants::TR_SHOW_LEFT_SIDEBAR));
});
addSideBar();
m_toggleSideBarAction->setChecked(m_sideBar->isVisibleTo(this));
@@ -299,7 +299,7 @@ HelpWidget::~HelpWidget()
Core::ActionManager::unregisterAction(m_copy, Core::Constants::COPY);
Core::ActionManager::unregisterAction(m_printAction, Core::Constants::PRINT);
if (m_toggleSideBarAction)
- Core::ActionManager::unregisterAction(m_toggleSideBarAction, Core::Constants::TOGGLE_SIDEBAR);
+ Core::ActionManager::unregisterAction(m_toggleSideBarAction, Core::Constants::TOGGLE_LEFT_SIDEBAR);
if (m_switchToHelp)
Core::ActionManager::unregisterAction(m_switchToHelp, Constants::CONTEXT_HELP);
Core::ActionManager::unregisterAction(m_homeAction, Constants::HELP_HOME);
diff --git a/src/plugins/projectexplorer/foldernavigationwidget.cpp b/src/plugins/projectexplorer/foldernavigationwidget.cpp
index 56e226a856..8742c885cf 100644
--- a/src/plugins/projectexplorer/foldernavigationwidget.cpp
+++ b/src/plugins/projectexplorer/foldernavigationwidget.cpp
@@ -433,21 +433,19 @@ Core::NavigationView FolderNavigationWidgetFactory::createWidget()
return n;
}
-void FolderNavigationWidgetFactory::saveSettings(int position, QWidget *widget)
+void FolderNavigationWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
{
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
QTC_ASSERT(fnw, return);
- QSettings *settings = Core::ICore::settings();
const QString baseKey = QLatin1String("FolderNavigationWidget.") + QString::number(position);
settings->setValue(baseKey + QLatin1String(".HiddenFilesFilter"), fnw->hiddenFilesFilter());
settings->setValue(baseKey + QLatin1String(".SyncWithEditor"), fnw->autoSynchronization());
}
-void FolderNavigationWidgetFactory::restoreSettings(int position, QWidget *widget)
+void FolderNavigationWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
{
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
QTC_ASSERT(fnw, return);
- QSettings *settings = Core::ICore::settings();
const QString baseKey = QLatin1String("FolderNavigationWidget.") + QString::number(position);
fnw->setHiddenFilesFilter(settings->value(baseKey + QLatin1String(".HiddenFilesFilter"), false).toBool());
fnw->setAutoSynchronization(settings->value(baseKey + QLatin1String(".SyncWithEditor"), true).toBool());
diff --git a/src/plugins/projectexplorer/foldernavigationwidget.h b/src/plugins/projectexplorer/foldernavigationwidget.h
index d81967521e..3b4b37fa2f 100644
--- a/src/plugins/projectexplorer/foldernavigationwidget.h
+++ b/src/plugins/projectexplorer/foldernavigationwidget.h
@@ -94,8 +94,8 @@ public:
FolderNavigationWidgetFactory();
Core::NavigationView createWidget() override;
- void saveSettings(int position, QWidget *widget) override;
- void restoreSettings(int position, QWidget *widget) override;
+ void saveSettings(QSettings *settings, int position, QWidget *widget) override;
+ void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
};
} // namespace Internal
diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp
index 6631876187..938975d570 100644
--- a/src/plugins/projectexplorer/projecttree.cpp
+++ b/src/plugins/projectexplorer/projecttree.cpp
@@ -366,10 +366,9 @@ void ProjectTree::highlightProject(Project *project, const QString &message)
{
Core::ModeManager::activateMode(Core::Constants::MODE_EDIT);
- Core::NavigationWidget *navigation = Core::NavigationWidget::instance();
// Shows and focusses a project tree
- QWidget *widget = navigation->activateSubWidget(ProjectExplorer::Constants::PROJECTTREE_ID);
+ QWidget *widget = Core::NavigationWidget::activateSubWidget(ProjectExplorer::Constants::PROJECTTREE_ID, Core::Side::Left);
if (auto *projectTreeWidget = qobject_cast<ProjectTreeWidget *>(widget))
projectTreeWidget->showMessage(project->rootProjectNode(), message);
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp
index c7a2356c72..67bbf07405 100644
--- a/src/plugins/projectexplorer/projecttreewidget.cpp
+++ b/src/plugins/projectexplorer/projecttreewidget.cpp
@@ -468,22 +468,20 @@ NavigationView ProjectTreeWidgetFactory::createWidget()
return n;
}
-void ProjectTreeWidgetFactory::saveSettings(int position, QWidget *widget)
+void ProjectTreeWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
{
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
Q_ASSERT(ptw);
- QSettings *settings = ICore::settings();
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
settings->setValue(baseKey + QLatin1String(".ProjectFilter"), ptw->projectFilter());
settings->setValue(baseKey + QLatin1String(".GeneratedFilter"), ptw->generatedFilesFilter());
settings->setValue(baseKey + QLatin1String(".SyncWithEditor"), ptw->autoSynchronization());
}
-void ProjectTreeWidgetFactory::restoreSettings(int position, QWidget *widget)
+void ProjectTreeWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
{
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
Q_ASSERT(ptw);
- QSettings *settings = ICore::settings();
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
ptw->setProjectFilter(settings->value(baseKey + QLatin1String(".ProjectFilter"), false).toBool());
ptw->setGeneratedFilesFilter(settings->value(baseKey + QLatin1String(".GeneratedFilter"), true).toBool());
diff --git a/src/plugins/projectexplorer/projecttreewidget.h b/src/plugins/projectexplorer/projecttreewidget.h
index 837025f257..072cc1f1ab 100644
--- a/src/plugins/projectexplorer/projecttreewidget.h
+++ b/src/plugins/projectexplorer/projecttreewidget.h
@@ -101,8 +101,8 @@ public:
ProjectTreeWidgetFactory();
Core::NavigationView createWidget();
- void restoreSettings(int position, QWidget *widget);
- void saveSettings(int position, QWidget *widget);
+ void restoreSettings(QSettings *settings, int position, QWidget *widget);
+ void saveSettings(QSettings *settings, int position, QWidget *widget);
};
} // namespace Internal
diff --git a/src/plugins/qmldesigner/shortcutmanager.cpp b/src/plugins/qmldesigner/shortcutmanager.cpp
index b14d79d337..45ac8ff423 100644
--- a/src/plugins/qmldesigner/shortcutmanager.cpp
+++ b/src/plugins/qmldesigner/shortcutmanager.cpp
@@ -266,7 +266,7 @@ void ShortCutManager::registerActions(const Core::Context &qmlDesignerMainContex
command->setDefaultKeySequence(QKeySequence(Qt::Key_Escape));
m_escapeAction.setEnabled(false);
- Core::ActionManager::registerAction(&m_hideSidebarsAction, Core::Constants::TOGGLE_SIDEBAR, qmlDesignerMainContext);
+ Core::ActionManager::registerAction(&m_hideSidebarsAction, Core::Constants::TOGGLE_LEFT_SIDEBAR, qmlDesignerMainContext);
connect(designerActionManager.view(), &DesignerActionManagerView::selectionChanged, this, [this](bool itemsSelected, bool rootItemIsSelected) {
m_deleteAction.setEnabled(itemsSelected && !rootItemIsSelected);
diff --git a/src/plugins/texteditor/outlinefactory.cpp b/src/plugins/texteditor/outlinefactory.cpp
index 1a068c3bfa..31eeabde17 100644
--- a/src/plugins/texteditor/outlinefactory.cpp
+++ b/src/plugins/texteditor/outlinefactory.cpp
@@ -89,39 +89,38 @@ QToolButton *OutlineWidgetStack::filterButton()
return m_filterButton;
}
-void OutlineWidgetStack::restoreSettings(int position)
+void OutlineWidgetStack::saveSettings(QSettings *settings, int position)
{
- QSettings *settings = Core::ICore::settings();
- settings->beginGroup(QLatin1String("Sidebar.Outline.") + QString::number(position));
+ const QString baseKey = QStringLiteral("Outline.%1.").arg(position);
+ settings->setValue(baseKey + QLatin1String("SyncWithEditor"), toggleSyncButton()->isChecked());
+ for (auto iter = m_widgetSettings.constBegin(); iter != m_widgetSettings.constEnd(); ++iter)
+ settings->setValue(baseKey + iter.key(), iter.value());
+}
+
+void OutlineWidgetStack::restoreSettings(QSettings *settings, int position)
+{
+ const QString baseKey = QStringLiteral("Outline.%1.").arg(position);
bool syncWithEditor = true;
m_widgetSettings.clear();
- foreach (const QString &key, settings->allKeys()) {
+ foreach (const QString &longKey, settings->allKeys()) {
+ if (!longKey.startsWith(baseKey))
+ continue;
+
+ const QString key = longKey.mid(baseKey.length());
+
if (key == QLatin1String("SyncWithEditor")) {
- syncWithEditor = settings->value(key).toBool();
+ syncWithEditor = settings->value(longKey).toBool();
continue;
}
- m_widgetSettings.insert(key, settings->value(key));
+ m_widgetSettings.insert(key, settings->value(longKey));
}
- settings->endGroup();
toggleSyncButton()->setChecked(syncWithEditor);
if (IOutlineWidget *outlineWidget = qobject_cast<IOutlineWidget*>(currentWidget()))
outlineWidget->restoreSettings(m_widgetSettings);
}
-void OutlineWidgetStack::saveSettings(int position)
-{
- QSettings *settings = Core::ICore::settings();
- settings->beginGroup(QLatin1String("Sidebar.Outline.") + QString::number(position));
-
- settings->setValue(QLatin1String("SyncWithEditor"), toggleSyncButton()->isChecked());
- for (auto iter = m_widgetSettings.constBegin(); iter != m_widgetSettings.constEnd(); ++iter)
- settings->setValue(iter.key(), iter.value());
-
- settings->endGroup();
-}
-
bool OutlineWidgetStack::isCursorSynchronized() const
{
return m_syncWithEditor;
@@ -206,18 +205,18 @@ Core::NavigationView OutlineFactory::createWidget()
return n;
}
-void OutlineFactory::saveSettings(int position, QWidget *widget)
+void OutlineFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
{
OutlineWidgetStack *widgetStack = qobject_cast<OutlineWidgetStack *>(widget);
Q_ASSERT(widgetStack);
- widgetStack->saveSettings(position);
+ widgetStack->saveSettings(settings, position);
}
-void OutlineFactory::restoreSettings(int position, QWidget *widget)
+void OutlineFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
{
OutlineWidgetStack *widgetStack = qobject_cast<OutlineWidgetStack *>(widget);
Q_ASSERT(widgetStack);
- widgetStack->restoreSettings(position);
+ widgetStack->restoreSettings(settings, position);
}
} // namespace Internal
diff --git a/src/plugins/texteditor/outlinefactory.h b/src/plugins/texteditor/outlinefactory.h
index 05f60a7859..11a1f4d0a9 100644
--- a/src/plugins/texteditor/outlinefactory.h
+++ b/src/plugins/texteditor/outlinefactory.h
@@ -47,8 +47,8 @@ public:
QToolButton *toggleSyncButton();
QToolButton *filterButton();
- void saveSettings(int position);
- void restoreSettings(int position);
+ void saveSettings(QSettings *settings, int position);
+ void restoreSettings(QSettings *settings, int position);
private:
bool isCursorSynchronized() const;
@@ -77,8 +77,8 @@ public:
// from INavigationWidgetFactory
virtual Core::NavigationView createWidget();
- virtual void saveSettings(int position, QWidget *widget);
- virtual void restoreSettings(int position, QWidget *widget);
+ virtual void saveSettings(QSettings *settings, int position, QWidget *widget);
+ virtual void restoreSettings(QSettings *settings, int position, QWidget *widget);
private:
QList<IOutlineWidgetFactory*> m_factories;
};
diff --git a/src/tools/icons/qtcreatoricons.svg b/src/tools/icons/qtcreatoricons.svg
index 3ca2edef6a..2041e47917 100644
--- a/src/tools/icons/qtcreatoricons.svg
+++ b/src/tools/icons/qtcreatoricons.svg
@@ -2349,7 +2349,7 @@
transform="translate(0,-100)" />
</g>
<g
- id="src/libs/utils/images/sidebaricon"
+ id="src/libs/utils/images/leftsidebaricon"
clip-path="none"
transform="translate(399,0)">
<rect
@@ -4213,6 +4213,14 @@
transform="matrix(1,0,0,-1,16,1152)"
width="100%"
height="100%" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#src/libs/utils/images/leftsidebaricon"
+ id="src/libs/utils/images/rightsidebaricon"
+ width="100%"
+ height="100%"
+ transform="matrix(-1,0,0,1,2293,0)" />
</g>
<g
inkscape:groupmode="layer"