diff --git a/src/plugins/coreplugin/editmode.cpp b/src/plugins/coreplugin/editmode.cpp index d5d396bdf1b..9f32c10fe88 100644 --- a/src/plugins/coreplugin/editmode.cpp +++ b/src/plugins/coreplugin/editmode.cpp @@ -19,12 +19,50 @@ #include #include -namespace Core { -namespace Internal { +namespace Core::Internal { -EditMode::EditMode() : - m_splitter(new MiniSplitter), - m_rightSplitWidgetLayout(new QVBoxLayout) +class EditModeWidget final : public MiniSplitter +{ +public: + EditModeWidget() + { + auto editorPlaceHolder = new EditorManagerPlaceHolder; + + QWidget *rightSplitWidget = new QWidget; + auto rightSplitWidgetLayout = new QVBoxLayout(rightSplitWidget); + rightSplitWidgetLayout->setSpacing(0); + rightSplitWidgetLayout->setContentsMargins(0, 0, 0, 0); + rightSplitWidgetLayout->insertWidget(0, editorPlaceHolder); + + auto rightPaneSplitter = new MiniSplitter; + rightPaneSplitter->insertWidget(0, rightSplitWidget); + rightPaneSplitter->insertWidget(1, new RightPanePlaceHolder(Constants::MODE_EDIT)); + rightPaneSplitter->setStretchFactor(0, 1); + rightPaneSplitter->setStretchFactor(1, 0); + + auto splitter = new MiniSplitter; + splitter->setOrientation(Qt::Vertical); + splitter->insertWidget(0, rightPaneSplitter); + QWidget *outputPane = new OutputPanePlaceHolder(Constants::MODE_EDIT, splitter); + outputPane->setObjectName(QLatin1String("EditModeOutputPanePlaceHolder")); + splitter->insertWidget(1, outputPane); + splitter->setStretchFactor(0, 3); + splitter->setStretchFactor(1, 0); + + insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Left)); + insertWidget(1, splitter); + insertWidget(2, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Right)); + setStretchFactor(0, 0); + setStretchFactor(1, 1); + setStretchFactor(2, 0); + + setFocusProxy(editorPlaceHolder); + + IContext::attach(this, Context(Constants::C_EDITORMANAGER)); + } +}; + +EditMode::EditMode() { setObjectName(QLatin1String("EditMode")); setDisplayName(Tr::tr("Edit")); @@ -33,48 +71,16 @@ EditMode::EditMode() : setPriority(Constants::P_MODE_EDIT); setId(Constants::MODE_EDIT); - m_rightSplitWidgetLayout->setSpacing(0); - m_rightSplitWidgetLayout->setContentsMargins(0, 0, 0, 0); - QWidget *rightSplitWidget = new QWidget; - rightSplitWidget->setLayout(m_rightSplitWidgetLayout); - auto editorPlaceHolder = new EditorManagerPlaceHolder; - m_rightSplitWidgetLayout->insertWidget(0, editorPlaceHolder); - - auto rightPaneSplitter = new MiniSplitter; - rightPaneSplitter->insertWidget(0, rightSplitWidget); - rightPaneSplitter->insertWidget(1, new RightPanePlaceHolder(Constants::MODE_EDIT)); - rightPaneSplitter->setStretchFactor(0, 1); - rightPaneSplitter->setStretchFactor(1, 0); - - auto splitter = new MiniSplitter; - splitter->setOrientation(Qt::Vertical); - splitter->insertWidget(0, rightPaneSplitter); - QWidget *outputPane = new OutputPanePlaceHolder(Constants::MODE_EDIT, splitter); - outputPane->setObjectName(QLatin1String("EditModeOutputPanePlaceHolder")); - splitter->insertWidget(1, outputPane); - splitter->setStretchFactor(0, 3); - splitter->setStretchFactor(1, 0); - - 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); - m_splitter->setFocusProxy(editorPlaceHolder); - IContext::attach(m_splitter, Context(Constants::C_EDITORMANAGER)); - - setWidget(m_splitter); + setWidget(new EditModeWidget); setContext(Context(Constants::C_EDIT_MODE, Constants::C_NAVIGATION_PANE)); } EditMode::~EditMode() { - delete m_splitter; + delete widget(); } void EditMode::grabEditorManager(Utils::Id mode) @@ -86,5 +92,4 @@ void EditMode::grabEditorManager(Utils::Id mode) EditorManager::currentEditor()->widget()->setFocus(); } -} // namespace Internal -} // namespace Core +} // namespace Core::Internal diff --git a/src/plugins/coreplugin/editmode.h b/src/plugins/coreplugin/editmode.h index 1e7d36d5e8e..51b12928400 100644 --- a/src/plugins/coreplugin/editmode.h +++ b/src/plugins/coreplugin/editmode.h @@ -5,31 +5,16 @@ #include "imode.h" -QT_BEGIN_NAMESPACE -class QSplitter; -class QVBoxLayout; -QT_END_NAMESPACE +namespace Core::Internal { -namespace Core { - -class EditorManager; - -namespace Internal { - -class EditMode : public IMode +class EditMode final : public IMode { - Q_OBJECT - public: EditMode(); - ~EditMode() override; + ~EditMode() final; private: void grabEditorManager(Utils::Id mode); - - QSplitter *m_splitter; - QVBoxLayout *m_rightSplitWidgetLayout; }; -} // namespace Internal -} // namespace Core +} // namespace Core::Internal