diff --git a/src/plugins/coreplugin/designmodetoolbar.cpp b/src/plugins/coreplugin/designmodetoolbar.cpp index 34354e0cb00..90fc50dd6e0 100644 --- a/src/plugins/coreplugin/designmodetoolbar.cpp +++ b/src/plugins/coreplugin/designmodetoolbar.cpp @@ -183,13 +183,11 @@ void EditorToolBar::closeView() emit closeClicked(); } -void EditorToolBar::addEditor(IEditor *editor, ToolbarCreationFlags flags) +void EditorToolBar::addEditor(IEditor *editor) { connect(editor, SIGNAL(changed()), this, SLOT(checkEditorStatus())); QWidget *toolBar = editor->toolBar(); - m_ignoreEditorToolbar = flags & FlagsIgnoreIEditorToolBar; - if (toolBar && !m_ignoreEditorToolbar) addCenterToolBar(toolBar); @@ -215,6 +213,10 @@ void EditorToolBar::updateToolBar(QWidget *toolBar) m_activeToolBar = toolBar; } +void EditorToolBar::setToolbarCreationFlags(ToolbarCreationFlags flags) +{ + m_ignoreEditorToolbar = flags & FlagsIgnoreIEditorToolBar; +} void EditorToolBar::setCurrentEditor(IEditor *editor) { diff --git a/src/plugins/coreplugin/designmodetoolbar.h b/src/plugins/coreplugin/designmodetoolbar.h index 286884b7fc7..0deab7df899 100644 --- a/src/plugins/coreplugin/designmodetoolbar.h +++ b/src/plugins/coreplugin/designmodetoolbar.h @@ -61,15 +61,18 @@ public: enum ToolbarCreationFlags { FlagsNone = 0, FlagsIgnoreIEditorToolBar = 1 }; /** - * Adds an editor to listen to state changes so that the editor can be updated accordingly. + * Adds an editor whose state is listened to, so that the toolbar can be kept up to date + * with regards to locked status and tooltips. */ - void addEditor(IEditor *editor, ToolbarCreationFlags flags = FlagsNone); + void addEditor(IEditor *editor); /** * Sets the editor and adds its custom toolbar to the widget. */ void setCurrentEditor(IEditor *editor); + void setToolbarCreationFlags(ToolbarCreationFlags flags); + /** * Adds a toolbar to the widget and sets invisible by default. */ diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index 4b377eaad46..8a8dff3669a 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -30,7 +30,6 @@ #include "formeditorw.h" #include "formwindoweditor.h" #include "designerconstants.h" -#include "faketoolbar.h" #include "settingsmanager.h" #include "settingspage.h" #include "editorwidget.h" @@ -42,6 +41,7 @@ #include "resourcehandler.h" #include +#include #include #include #include @@ -154,7 +154,9 @@ FormEditorW::FormEditorW() : m_context(0), m_modeWidget(0), m_editorWidget(0), - m_designMode(0) + m_designMode(0), + m_editorToolBar(0), + m_toolBar(0) { if (Designer::Constants::Internal::debug) qDebug() << Q_FUNC_INFO; @@ -310,14 +312,19 @@ void FormEditorW::fullInit() m_editorWidget->restoreSettings(settings); settings->endGroup(); + m_editorToolBar = createEditorToolBar(); + m_toolBar = Core::EditorManager::createToolBar(); + m_toolBar->setToolbarCreationFlags(Core::EditorToolBar::FlagsIgnoreIEditorToolBar); + m_toolBar->setNavigationVisible(false); + m_toolBar->addCenterToolBar(m_editorToolBar); + m_designMode = ExtensionSystem::PluginManager::instance()->getObject(); m_modeWidget = new QWidget; m_modeWidget->setObjectName(QLatin1String("DesignerModeWidget")); QVBoxLayout *layout = new QVBoxLayout; layout->setMargin(0); layout->setSpacing(0); - - layout->addWidget(new FakeToolBar(createEditorToolBar())); + layout->addWidget(m_toolBar); layout->addWidget(m_editorWidget); m_modeWidget->setLayout(layout); @@ -676,6 +683,9 @@ EditorData FormEditorW::createEditor(QWidget *parent) connect(data.formWindowEditor->file(), SIGNAL(changed()), resourceHandler, SLOT(updateResources())); m_editorWidget->add(data); + + m_toolBar->addEditor(xmlEditor->editableInterface()); + return data; } diff --git a/src/plugins/designer/formeditorw.h b/src/plugins/designer/formeditorw.h index 63ab2cf0198..0cd32d7b947 100644 --- a/src/plugins/designer/formeditorw.h +++ b/src/plugins/designer/formeditorw.h @@ -61,6 +61,7 @@ class ICore; class IEditor; class Command; class DesignMode; +class EditorToolBar; } namespace Designer { @@ -192,6 +193,9 @@ private: EditorWidget *m_editorWidget; Core::DesignMode *m_designMode; + QWidget *m_editorToolBar; + Core::EditorToolBar *m_toolBar; + QMap m_commandToDesignerAction; }; diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index 2f65ada9e0f..9e6b0368077 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -297,7 +297,8 @@ void DocumentWidget::setup() m_designToolBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored); - m_fakeToolBar->addEditor(textEditor(), Core::EditorToolBar::FlagsIgnoreIEditorToolBar); + m_fakeToolBar->setToolbarCreationFlags(Core::EditorToolBar::FlagsIgnoreIEditorToolBar); + m_fakeToolBar->addEditor(textEditor()); m_fakeToolBar->addCenterToolBar(m_designToolBar); m_fakeToolBar->setNavigationVisible(false);