forked from qt-creator/qt-creator
EditorManagerPlaceHolder: Don't restrict to one per mode
Make visibility the deciding factor which placeholder takes the main editor area. A mode can have multiple placeholders as long as only a single one is visible at a time. Change-Id: I80b86dcb9e31b29f87fe42a465a3d3ad49eeef17 Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
@@ -58,7 +58,7 @@ EditMode::EditMode() :
|
|||||||
m_rightSplitWidgetLayout->setMargin(0);
|
m_rightSplitWidgetLayout->setMargin(0);
|
||||||
QWidget *rightSplitWidget = new QWidget;
|
QWidget *rightSplitWidget = new QWidget;
|
||||||
rightSplitWidget->setLayout(m_rightSplitWidgetLayout);
|
rightSplitWidget->setLayout(m_rightSplitWidgetLayout);
|
||||||
auto editorPlaceHolder = new EditorManagerPlaceHolder(Constants::MODE_EDIT);
|
auto editorPlaceHolder = new EditorManagerPlaceHolder;
|
||||||
m_rightSplitWidgetLayout->insertWidget(0, editorPlaceHolder);
|
m_rightSplitWidgetLayout->insertWidget(0, editorPlaceHolder);
|
||||||
|
|
||||||
MiniSplitter *rightPaneSplitter = new MiniSplitter;
|
MiniSplitter *rightPaneSplitter = new MiniSplitter;
|
||||||
|
|||||||
@@ -121,16 +121,12 @@ using namespace Utils;
|
|||||||
|
|
||||||
//===================EditorManager=====================
|
//===================EditorManager=====================
|
||||||
|
|
||||||
EditorManagerPlaceHolder::EditorManagerPlaceHolder(Id mode, QWidget *parent)
|
EditorManagerPlaceHolder::EditorManagerPlaceHolder(QWidget *parent)
|
||||||
: QWidget(parent), m_mode(mode)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
setLayout(new QVBoxLayout);
|
setLayout(new QVBoxLayout);
|
||||||
layout()->setMargin(0);
|
layout()->setMargin(0);
|
||||||
setFocusProxy(EditorManagerPrivate::mainEditorArea());
|
setFocusProxy(EditorManagerPrivate::mainEditorArea());
|
||||||
connect(ModeManager::instance(), &ModeManager::currentModeChanged,
|
|
||||||
this, &EditorManagerPlaceHolder::currentModeChanged);
|
|
||||||
|
|
||||||
currentModeChanged(ModeManager::currentMode());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EditorManagerPlaceHolder::~EditorManagerPlaceHolder()
|
EditorManagerPlaceHolder::~EditorManagerPlaceHolder()
|
||||||
@@ -143,18 +139,16 @@ EditorManagerPlaceHolder::~EditorManagerPlaceHolder()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorManagerPlaceHolder::currentModeChanged(Id mode)
|
void EditorManagerPlaceHolder::showEvent(QShowEvent *)
|
||||||
{
|
{
|
||||||
if (m_mode == mode) {
|
QWidget *previousFocus = 0;
|
||||||
QWidget *previousFocus = 0;
|
QWidget *em = EditorManagerPrivate::mainEditorArea();
|
||||||
QWidget *em = EditorManagerPrivate::mainEditorArea();
|
if (em->focusWidget() && em->focusWidget()->hasFocus())
|
||||||
if (em->focusWidget() && em->focusWidget()->hasFocus())
|
previousFocus = em->focusWidget();
|
||||||
previousFocus = em->focusWidget();
|
layout()->addWidget(em);
|
||||||
layout()->addWidget(em);
|
em->show();
|
||||||
em->show();
|
if (previousFocus)
|
||||||
if (previousFocus)
|
previousFocus->setFocus();
|
||||||
previousFocus->setFocus();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------- EditorManager
|
// ---------------- EditorManager
|
||||||
|
|||||||
@@ -72,13 +72,11 @@ class CORE_EXPORT EditorManagerPlaceHolder : public QWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit EditorManagerPlaceHolder(Id mode, QWidget *parent = 0);
|
explicit EditorManagerPlaceHolder(QWidget *parent = 0);
|
||||||
~EditorManagerPlaceHolder();
|
~EditorManagerPlaceHolder();
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
void currentModeChanged(Id mode);
|
void showEvent(QShowEvent *event) override;
|
||||||
|
|
||||||
Id m_mode;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CORE_EXPORT EditorManager : public QObject
|
class CORE_EXPORT EditorManager : public QObject
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ void DebuggerMainWindow::finalizeSetup()
|
|||||||
QWidget *createModeWindow(const Core::Id &mode, DebuggerMainWindow *mainWindow, QWidget *central)
|
QWidget *createModeWindow(const Core::Id &mode, DebuggerMainWindow *mainWindow, QWidget *central)
|
||||||
{
|
{
|
||||||
if (!central)
|
if (!central)
|
||||||
central = new EditorManagerPlaceHolder(mode);
|
central = new EditorManagerPlaceHolder;
|
||||||
|
|
||||||
auto editorHolderLayout = new QVBoxLayout;
|
auto editorHolderLayout = new QVBoxLayout;
|
||||||
editorHolderLayout->setMargin(0);
|
editorHolderLayout->setMargin(0);
|
||||||
|
|||||||
Reference in New Issue
Block a user