diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/coreplugin/coreplugin.cpp | 6 | ||||
-rw-r--r-- | src/plugins/coreplugin/designmode.cpp | 21 | ||||
-rw-r--r-- | src/plugins/coreplugin/designmode.h | 5 | ||||
-rw-r--r-- | src/plugins/designer/formeditorplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/designer/formeditorw.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designmodewidget.cpp | 5 | ||||
-rw-r--r-- | src/plugins/qmldesigner/qmldesignerplugin.cpp | 2 |
7 files changed, 36 insertions, 7 deletions
diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp index 57fb0700c2..f603e0a805 100644 --- a/src/plugins/coreplugin/coreplugin.cpp +++ b/src/plugins/coreplugin/coreplugin.cpp @@ -60,7 +60,8 @@ CorePlugin::~CorePlugin() } if (m_designMode) { - removeObject(m_designMode); + if (m_designMode->designModeIsRequired()) + removeObject(m_designMode); delete m_designMode; } @@ -90,7 +91,6 @@ bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage) addObject(m_editMode); m_mainWindow->modeManager()->activateMode(m_editMode->id()); m_designMode = new DesignMode; - addObject(m_designMode); } return success; } @@ -98,6 +98,8 @@ bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage) void CorePlugin::extensionsInitialized() { m_mainWindow->mimeDatabase()->syncUserModifiedMimeTypes(); + if (m_designMode->designModeIsRequired()) + addObject(m_designMode); m_mainWindow->extensionsInitialized(); } diff --git a/src/plugins/coreplugin/designmode.cpp b/src/plugins/coreplugin/designmode.cpp index 67dd0ea748..f7b84f0e80 100644 --- a/src/plugins/coreplugin/designmode.cpp +++ b/src/plugins/coreplugin/designmode.cpp @@ -54,6 +54,8 @@ #include <QtGui/QPlainTextEdit> #include <QtGui/QStackedWidget> +static Core::DesignMode *m_instance = 0; + namespace Core { class EditorManager; @@ -103,6 +105,7 @@ public: Internal::DesignModeCoreListener *m_coreListener; QWeakPointer<Core::IEditor> m_currentEditor; bool m_isActive; + bool m_isRequired; QList<DesignEditorInfo*> m_editors; QStackedWidget *m_stackWidget; Context m_activeContext; @@ -111,6 +114,7 @@ public: DesignModePrivate::DesignModePrivate(DesignMode *q) : m_coreListener(new Internal::DesignModeCoreListener(q)), m_isActive(false), + m_isRequired(false), m_stackWidget(new QStackedWidget) { } @@ -118,6 +122,7 @@ DesignModePrivate::DesignModePrivate(DesignMode *q) DesignMode::DesignMode() : d(new DesignModePrivate(this)) { + m_instance = this; setObjectName(QLatin1String("DesignMode")); setEnabled(false); setContext(Context(Constants::C_DESIGN_MODE)); @@ -146,6 +151,21 @@ DesignMode::~DesignMode() delete d; } +DesignMode *DesignMode::instance() +{ + return m_instance; +} + +void DesignMode::setDesignModeIsRequired() +{ + d->m_isRequired = true; +} + +bool DesignMode::designModeIsRequired() const +{ + return d->m_isRequired; +} + QStringList DesignMode::registeredMimeTypes() const { QStringList rc; @@ -163,6 +183,7 @@ void DesignMode::registerDesignWidget(QWidget *widget, const QStringList &mimeTypes, const Context &context) { + setDesignModeIsRequired(); int index = d->m_stackWidget->addWidget(widget); DesignEditorInfo *info = new DesignEditorInfo; diff --git a/src/plugins/coreplugin/designmode.h b/src/plugins/coreplugin/designmode.h index 1cebac7f55..dcb24de6a6 100644 --- a/src/plugins/coreplugin/designmode.h +++ b/src/plugins/coreplugin/designmode.h @@ -59,6 +59,11 @@ public: explicit DesignMode(); virtual ~DesignMode(); + static DesignMode *instance(); + + void setDesignModeIsRequired(); + bool designModeIsRequired() const; + void registerDesignWidget(QWidget *widget, const QStringList &mimeTypes, const Context &context); diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp index fb2b322739..beaec5c57c 100644 --- a/src/plugins/designer/formeditorplugin.cpp +++ b/src/plugins/designer/formeditorplugin.cpp @@ -47,6 +47,7 @@ #include <coreplugin/icore.h> #include <coreplugin/mimedatabase.h> #include <coreplugin/coreconstants.h> +#include <coreplugin/designmode.h> #include <coreplugin/id.h> #include <extensionsystem/pluginmanager.h> @@ -108,6 +109,7 @@ bool FormEditorPlugin::initialize(const QStringList &arguments, QString *error) void FormEditorPlugin::extensionsInitialized() { + Core::DesignMode::instance()->setDesignModeIsRequired(); // 4) test and make sure everything works (undo, saving, editors, opening/closing multiple files, dirtiness etc) } diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index e532a1a80f..fb4ca6cfaf 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -342,7 +342,7 @@ void FormEditorW::fullInit() m_toolBar->setNavigationVisible(false); m_toolBar->addCenterToolBar(m_editorToolBar); - m_designMode = ExtensionSystem::PluginManager::instance()->getObject<Core::DesignMode>(); + m_designMode = Core::DesignMode::instance(); m_modeWidget = new QWidget; m_modeWidget->setObjectName(QLatin1String("DesignerModeWidget")); QVBoxLayout *layout = new QVBoxLayout; diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index 1532a96877..79387ff7ee 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -44,6 +44,7 @@ #include <toolbox.h> #include <coreplugin/coreconstants.h> +#include <coreplugin/designmode.h> #include <coreplugin/modemanager.h> #include <coreplugin/outputpane.h> #include <coreplugin/icore.h> @@ -224,10 +225,8 @@ DesignModeWidget::DesignModeWidget(QWidget *parent) : m_toggleRightSidebarAction = new QAction(tr("Toggle &Right Sidebar"), this); connect(m_toggleRightSidebarAction, SIGNAL(triggered()), SLOT(toggleRightSidebar())); - Core::ModeManager *modeManager = Core::ModeManager::instance(); - Core::IMode *designmode = modeManager->mode(Core::Constants::MODE_DESIGN); m_outputPlaceholderSplitter = new Core::MiniSplitter; - m_outputPanePlaceholder = new StyledOutputpanePlaceHolder(designmode, m_outputPlaceholderSplitter); + m_outputPanePlaceholder = new StyledOutputpanePlaceHolder(Core::DesignMode::instance(), m_outputPlaceholderSplitter); } DesignModeWidget::~DesignModeWidget() diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index 004779c121..ceb5adb313 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -359,7 +359,7 @@ void BauhausPlugin::updateActions(Core::IEditor* editor) void BauhausPlugin::extensionsInitialized() { - m_designMode = ExtensionSystem::PluginManager::instance()->getObject<Core::DesignMode>(); + m_designMode = Core::DesignMode::instance(); m_mimeTypes << "application/x-qml"; |