From 43ff20d7283f3544d167220246a847bba92448d7 Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Mon, 3 Sep 2012 17:11:44 +0200
Subject: [PATCH] QmlDesigner: Move modelnodecontextmenu to the navigator

The context node of the model node don't belongs to model because it has
dependencies.

Change-Id: Ia67a055a4beac33477485d05574134ffe4dc6ae1
Reviewed-by: Alessandro Portale <alessandro.portale@nokia.com>
---
 .../componentcore/componentcore.pri           |  5 +++++
 .../componentcore}/modelnodecontextmenu.cpp   |  6 ++++++
 .../componentcore}/modelnodecontextmenu.h     |  2 ++
 .../formeditor/abstractformeditortool.cpp     |  4 +++-
 .../integration/designdocumentcontroller.cpp  |  2 +-
 .../components/navigator/navigator.pri        |  1 +
 .../navigator/navigatortreemodel.cpp          |  6 +++---
 .../components/navigator/navigatorview.cpp    |  1 +
 .../qmldesigner/designercore/designercore.pri |  6 ++----
 .../designercore/include/qmlmodelview.h       |  2 --
 .../designercore/model/qmlmodelview.cpp       |  9 ---------
 src/plugins/qmldesigner/qmldesignerplugin.pri | 16 ++++++++++++++++
 src/plugins/qmldesigner/qmldesignerplugin.pro | 19 ++-----------------
 13 files changed, 42 insertions(+), 37 deletions(-)
 create mode 100644 src/plugins/qmldesigner/components/componentcore/componentcore.pri
 rename src/plugins/qmldesigner/{designercore/model => components/componentcore}/modelnodecontextmenu.cpp (99%)
 rename src/plugins/qmldesigner/{designercore/model => components/componentcore}/modelnodecontextmenu.h (96%)
 create mode 100644 src/plugins/qmldesigner/qmldesignerplugin.pri

diff --git a/src/plugins/qmldesigner/components/componentcore/componentcore.pri b/src/plugins/qmldesigner/components/componentcore/componentcore.pri
new file mode 100644
index 00000000000..9035a629d7f
--- /dev/null
+++ b/src/plugins/qmldesigner/components/componentcore/componentcore.pri
@@ -0,0 +1,5 @@
+VPATH += $$PWD
+INCLUDEPATH += $$PWD
+SOURCES += modelnodecontextmenu.cpp
+
+HEADERS += modelnodecontextmenu.h
diff --git a/src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp
similarity index 99%
rename from src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp
rename to src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp
index 76aaf323e26..6db35f8782c 100644
--- a/src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp
@@ -434,6 +434,12 @@ void ModelNodeContextMenu::setScenePos(const QPoint &pos)
     m_scenePos = pos;
 }
 
+void ModelNodeContextMenu::showContextMenu(QmlModelView *view, const QPoint &globalPosition, const QPoint &scenePosition, bool showSelection)
+{
+    ModelNodeContextMenu contextMenu(view);
+    contextMenu.setScenePos(scenePosition);
+    contextMenu.execute(globalPosition, showSelection);
+}
 
 ModelNodeAction* ModelNodeContextMenu::createModelNodeAction(const QString &description, QMenu *menu, const QList<ModelNode> &modelNodeList, ModelNodeAction::ModelNodeActionType type, bool enabled)
 {
diff --git a/src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.h b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.h
similarity index 96%
rename from src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.h
rename to src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.h
index 69506b0925a..d371b5a8d6c 100644
--- a/src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.h
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.h
@@ -118,6 +118,8 @@ public:
     void execute(const QPoint &pos, bool selectionMenu);
     void setScenePos(const QPoint &pos);
 
+    static void showContextMenu(QmlModelView *view, const QPoint &globalPosition, const QPoint &scenePosition, bool showSelection);
+
 private:
     ModelNodeAction* createModelNodeAction(const QString &description, QMenu *menu, const QList<ModelNode> &modelNodeList, ModelNodeAction::ModelNodeActionType type, bool enabled = true);
 
diff --git a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp
index 24225300126..1a8a86966a8 100644
--- a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp
@@ -32,6 +32,8 @@
 #include "formeditorview.h"
 #include "formeditorview.h"
 
+#include <modelnodecontextmenu.h>
+
 #include <coreplugin/editormanager/editormanager.h>
 
 #include <QDebug>
@@ -211,7 +213,7 @@ void AbstractFormEditorTool::mouseDoubleClickEvent(const QList<QGraphicsItem*> &
 
 void AbstractFormEditorTool::showContextMenu(QGraphicsSceneMouseEvent *event)
 {
-     view()->showContextMenu(event->screenPos(), event->scenePos().toPoint(), true);
+    ModelNodeContextMenu::showContextMenu(view(), event->screenPos(), event->scenePos().toPoint(), true);
 }
 
 void AbstractFormEditorTool::clear()
diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
index 772255eee62..780b1c1adf7 100644
--- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
+++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
@@ -44,7 +44,7 @@
 #include <nodelistproperty.h>
 #include <variantproperty.h>
 #include <rewritingexception.h>
-#include <model/modelnodecontextmenu.h>
+#include <modelnodecontextmenu.h>
 #include <designmodewidget.h>
 
 #include <projectexplorer/projectexplorer.h>
diff --git a/src/plugins/qmldesigner/components/navigator/navigator.pri b/src/plugins/qmldesigner/components/navigator/navigator.pri
index 3ce8bc68776..60b0527f5db 100644
--- a/src/plugins/qmldesigner/components/navigator/navigator.pri
+++ b/src/plugins/qmldesigner/components/navigator/navigator.pri
@@ -4,6 +4,7 @@ SOURCES += navigatorview.cpp \
     navigatortreemodel.cpp \
     navigatorwidget.cpp \
     navigatortreeview.cpp
+
 HEADERS += navigatorview.h \
     navigatortreemodel.h \
     navigatorwidget.h \
diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
index 8e4acd1927f..e2d6851c47a 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
@@ -40,6 +40,7 @@
 #include <rewriterview.h>
 #include <invalididexception.h>
 #include <rewritingexception.h>
+#include <modelnodecontextmenu.h>
 
 #include <QMimeData>
 #include <QMessageBox>
@@ -659,10 +660,9 @@ void NavigatorTreeModel::setVisible(const QModelIndex &index, bool visible)
     itemRow.visibilityItem->setCheckState(visible ? Qt::Checked : Qt::Unchecked);
 }
 
-void NavigatorTreeModel::openContextMenu(const QPoint &p)
+void NavigatorTreeModel::openContextMenu(const QPoint &position)
 {
-    if (m_view)
-        m_view->showContextMenu(p, QPoint(), false);
+    ModelNodeContextMenu::showContextMenu(m_view.data(), position, QPoint(), false);
 }
 
 } // QmlDesigner
diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
index a21888ed4ce..c1b29af4e4d 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
@@ -31,6 +31,7 @@
 #include "navigatorview.h"
 #include "navigatortreemodel.h"
 #include "navigatorwidget.h"
+#include "modelnodecontextmenu.h"
 
 #include <coreplugin/editormanager/editormanager.h>
 
diff --git a/src/plugins/qmldesigner/designercore/designercore.pri b/src/plugins/qmldesigner/designercore/designercore.pri
index 539f241c9aa..744d62bcbcb 100644
--- a/src/plugins/qmldesigner/designercore/designercore.pri
+++ b/src/plugins/qmldesigner/designercore/designercore.pri
@@ -75,8 +75,7 @@ SOURCES += $$PWD/model/abstractview.cpp \
     $$PWD/model/rewriteactioncompressor.cpp \
     $$PWD/model/qmltextgenerator.cpp \
     $$PWD/model/modelmerger.cpp \
-    $$PWD/exceptions/rewritingexception.cpp \
-    $$PWD/model/modelnodecontextmenu.cpp
+    $$PWD/exceptions/rewritingexception.cpp
 
 HEADERS += $$PWD/include/corelib_global.h \
     $$PWD/include/abstractview.h \
@@ -146,8 +145,7 @@ HEADERS += $$PWD/include/corelib_global.h \
     $$PWD/include/modelmerger.h \
     $$PWD/include/mathutils.h \
     $$PWD/include/customnotifications.h \
-    $$PWD/include/rewritingexception.h \
-    $$PWD//model/modelnodecontextmenu.h
+    $$PWD/include/rewritingexception.h
 
 contains(CONFIG, plugin) {
   # If core.pri has been included in the qmldesigner plugin
diff --git a/src/plugins/qmldesigner/designercore/include/qmlmodelview.h b/src/plugins/qmldesigner/designercore/include/qmlmodelview.h
index 77bd7f50417..94a57551345 100644
--- a/src/plugins/qmldesigner/designercore/include/qmlmodelview.h
+++ b/src/plugins/qmldesigner/designercore/include/qmlmodelview.h
@@ -121,8 +121,6 @@ public:
     void importsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports);
     void nodeSourceChanged(const ModelNode &modelNode, const QString &newNodeSource);
 
-    void showContextMenu(const QPoint &globalPos, const QPoint &scenePos, bool showSelection);
-
 protected:
     NodeInstance instanceForModelNode(const ModelNode &modelNode);
     bool hasInstanceForModelNode(const ModelNode &modelNode);
diff --git a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp
index f610b00593b..c2df79aa7e5 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp
@@ -46,8 +46,6 @@
 #include "rewriterview.h"
 #include "plaintexteditmodifier.h"
 #include "modelmerger.h"
-#include "modelnodecontextmenu.h"
-
 
 namespace QmlDesigner {
 
@@ -425,13 +423,6 @@ void QmlModelView::nodeSourceChanged(const ModelNode &, const QString & /*newNod
 
 }
 
-void QmlModelView::showContextMenu(const QPoint &globalPos, const QPoint &scenePos, bool showSelection)
-{
-    ModelNodeContextMenu contextMenu(this);
-    contextMenu.setScenePos(scenePos);
-    contextMenu.execute(globalPos, showSelection);
-}
-
 void QmlModelView::rewriterBeginTransaction()
 {
 
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.pri b/src/plugins/qmldesigner/qmldesignerplugin.pri
new file mode 100644
index 00000000000..efe34c0bffe
--- /dev/null
+++ b/src/plugins/qmldesigner/qmldesignerplugin.pri
@@ -0,0 +1,16 @@
+HEADERS += $$PWD/qmldesignerconstants.h \
+    $$PWD/qmldesignerplugin.h \
+    $$PWD/designmodewidget.h \
+    $$PWD/designersettings.h \
+    $$PWD/settingspage.h \
+    $$PWD/designmodecontext.h \
+    $$PWD/styledoutputpaneplaceholder.h
+
+SOURCES += $$PWD/qmldesignerplugin.cpp \
+    $$PWD/designmodewidget.cpp \
+    $$PWD/designersettings.cpp \
+    $$PWD/settingspage.cpp \
+    $$PWD/designmodecontext.cpp \
+    $$PWD/styledoutputpaneplaceholder.cpp
+
+FORMS += $$PWD/settingspage.ui
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.pro b/src/plugins/qmldesigner/qmldesignerplugin.pro
index d042701c192..dee55d0678d 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.pro
+++ b/src/plugins/qmldesigner/qmldesignerplugin.pro
@@ -10,6 +10,7 @@ include(../../private_headers.pri)
 include(qmldesigner_dependencies.pri)
 
 include(designercore/designercore.pri)
+include(components/componentcore/componentcore.pri)
 include(components/integration/integration.pri)
 include(components/propertyeditor/propertyeditor.pri)
 include(components/formeditor/formeditor.pri)
@@ -18,20 +19,4 @@ include(components/navigator/navigator.pri)
 include(components/pluginmanager/pluginmanager.pri)
 include(components/stateseditor/stateseditor.pri)
 include(components/resources/resources.pri)
-
-HEADERS += qmldesignerconstants.h \
-    qmldesignerplugin.h \
-    designmodewidget.h \
-    designersettings.h \
-    settingspage.h \
-    designmodecontext.h \
-    styledoutputpaneplaceholder.h
-
-SOURCES += qmldesignerplugin.cpp \
-    designmodewidget.cpp \
-    designersettings.cpp \
-    settingspage.cpp \
-    designmodecontext.cpp \
-    styledoutputpaneplaceholder.cpp
-
-FORMS += settingspage.ui
+include(qmldesignerplugin.pri)
-- 
GitLab