From 68d323014e38cf6f2e3fc7b5c940765b16ca24d4 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann <Thomas.Hartmann@nokia.com> Date: Tue, 8 Mar 2011 16:54:29 +0100 Subject: [PATCH] QmlDesigner.formEditor: allow selection of non movable items Some items are not movable, but the user should still be able to select them in the form editor. Best example are items inside a positioner. --- .../components/formeditor/formeditorview.cpp | 14 ++++++++++++++ .../components/formeditor/formeditorview.h | 1 + .../formeditor/singleselectionmanipulator.cpp | 2 -- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index 1f10304f011..9cc920b4684 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -290,6 +290,9 @@ void FormEditorView::changeToMoveTool() if (m_currentTool == m_moveTool) return; + if (!isMoveToolAvailable()) + return; + scene()->setPaintMode(FormEditorScene::NormalMode); m_scene->updateAllFormEditorItems(); setCursor(Qt::SizeAllCursor); @@ -319,6 +322,9 @@ void FormEditorView::changeToMoveTool(const QPointF &beginPoint) if (m_currentTool == m_moveTool) return; + if (!isMoveToolAvailable()) + return; + scene()->setPaintMode(FormEditorScene::NormalMode); m_scene->updateAllFormEditorItems(); setCursor(Qt::SizeAllCursor); @@ -600,6 +606,14 @@ void FormEditorView::setSelectOnlyContentItemsAction(bool selectOnlyContentItems m_selectionTool->setSelectOnlyContentItems(selectOnlyContentItems); } +bool FormEditorView::isMoveToolAvailable() const +{ + if (selectedQmlItemNodes().count() == 1) + return selectedQmlItemNodes().first().instanceIsMovable() && + !selectedQmlItemNodes().first().instanceIsInPositioner(); + return true; +} + void FormEditorView::stateChanged(const QmlModelState &newQmlModelState, const QmlModelState &oldQmlModelState) { QmlModelView::stateChanged(newQmlModelState, oldQmlModelState); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h index b8a4c57d190..452f61914b6 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h @@ -135,6 +135,7 @@ protected slots: QList<ModelNode> adjustStatesForModelNodes(const QList<ModelNode> &nodeList) const; void updateGraphicsIndicators(); void setSelectOnlyContentItemsAction(bool selectOnlyContentItems); + bool isMoveToolAvailable() const; private: //functions void setupFormEditorItemTree(const QmlItemNode &qmlItemNode); diff --git a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp index 944ecd8f1e2..cfbddc50fab 100644 --- a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp +++ b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp @@ -85,8 +85,6 @@ void SingleSelectionManipulator::select(SelectionType selectionType, bool select if (formEditorItem && formEditorItem->qmlItemNode().isValid() - && formEditorItem->qmlItemNode().instanceIsMovable() - && !formEditorItem->qmlItemNode().instanceIsInPositioner() && (formEditorItem->qmlItemNode().hasShowContent() || !selectOnlyContentItems)) { selectedNode = formEditorItem->qmlItemNode(); -- GitLab