summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin/statusbarmanager.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2018-07-10 15:49:50 +0200
committerEike Ziller <eike.ziller@qt.io>2018-08-09 08:55:25 +0000
commit8fa449126cf89c083f6ee53c3780313d45e853e1 (patch)
treec4c7a8cdc859fb8cf3fd3044db9deb9e6fb45354 /src/plugins/coreplugin/statusbarmanager.cpp
parent735aeb3e38c5ae14505b555c602700c971034aa2 (diff)
downloadqt-creator-8fa449126cf89c083f6ee53c3780313d45e853e1.tar.gz
Fix context of Locator input
- In the main window, the locator input (actually the status bar) visually feels like being part of the mode widget, so give it its context. - In extra editor windows, the whole editor window should have "editor manager" context, so that is also active for the locator input. Task-number: QTCREATORBUG-20626 Task-number: QTCREATORBUG-20071 Change-Id: Ib68d6a8177446572ea59c3cc057eca0706173e11 Reviewed-by: Xing Xiong Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/coreplugin/statusbarmanager.cpp')
-rw-r--r--src/plugins/coreplugin/statusbarmanager.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/plugins/coreplugin/statusbarmanager.cpp b/src/plugins/coreplugin/statusbarmanager.cpp
index c653928ad8..e71e745077 100644
--- a/src/plugins/coreplugin/statusbarmanager.cpp
+++ b/src/plugins/coreplugin/statusbarmanager.cpp
@@ -25,8 +25,10 @@
#include "statusbarmanager.h"
+#include "imode.h"
#include "mainwindow.h"
#include "minisplitter.h"
+#include "modemanager.h"
#include <utils/qtcassert.h>
@@ -45,6 +47,17 @@ static QPointer<QSplitter> m_splitter;
static QList<QPointer<QWidget>> m_statusBarWidgets;
static QList<QPointer<IContext>> m_contexts;
+/*!
+ Context that always returns the context of the active's mode widget (if available).
+*/
+class StatusBarContext : public IContext
+{
+public:
+ StatusBarContext(QObject *parent);
+
+ Context context() const final;
+};
+
static QWidget *createWidget(QWidget *parent)
{
QWidget *w = new QWidget(parent);
@@ -85,6 +98,10 @@ static void createStatusBarManager()
bar->insertPermanentWidget(1, rightCornerWidget);
m_statusBarWidgets.append(rightCornerWidget);
+ auto context = new StatusBarContext(bar);
+ context->setWidget(bar);
+ ICore::addContextObject(context);
+
QObject::connect(ICore::instance(), &ICore::saveSettingsRequested, [] {
QSettings *s = ICore::settings();
s->beginGroup(QLatin1String(kSettingsGroup));
@@ -152,4 +169,20 @@ void StatusBarManager::restoreSettings()
m_splitter->setSizes(QList<int>() << leftSplitWidth << (sum - leftSplitWidth));
}
+StatusBarContext::StatusBarContext(QObject *parent)
+ : IContext(parent)
+{
+}
+
+Context StatusBarContext::context() const
+{
+ IMode *currentMode = ModeManager::currentMode();
+ QWidget *modeWidget = currentMode ? currentMode->widget() : nullptr;
+ if (modeWidget) {
+ if (IContext *context = ICore::contextObject(modeWidget))
+ return context->context();
+ }
+ return Context();
+}
+
} // Core