From 877f9081cc7fd288492479af7b3a6abb5f2bb00f Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 25 Jul 2013 12:41:19 +0200 Subject: [PATCH] QmlDesigner: Add more selection functions in SelectionContext It is much smarter to use the view functions instead of generating the whole list and pick the first item or ask if the list is empty. Change-Id: Ifcd40784ddab75c505b5f7f2dfc7b11cbd11c69d Reviewed-by: Thomas Hartmann --- .../componentcore/modelnodeoperations.cpp | 18 +++++++++--------- .../componentcore/selectioncontext.cpp | 10 ++++++++++ .../componentcore/selectioncontext.h | 2 ++ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index bc062e2316e..490db89fb4d 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -151,7 +151,7 @@ void toFront(const SelectionContext &selectionState) return; try { - QmlItemNode node = selectionState.selectedModelNodes().first(); + QmlItemNode node = selectionState.firstSelectedModelNode(); if (node.isValid()) { signed int maximumZ = getMaxZValue(siblingsForNode(node)); maximumZ++; @@ -168,7 +168,7 @@ void toBack(const SelectionContext &selectionState) if (!selectionState.view()) return; try { - QmlItemNode node = selectionState.selectedModelNodes().first(); + QmlItemNode node = selectionState.firstSelectedModelNode(); if (node.isValid()) { signed int minimumZ = getMinZValue(siblingsForNode(node)); minimumZ--; @@ -248,11 +248,11 @@ void setVisible(const SelectionContext &selectionState) void setFillWidth(const SelectionContext &selectionState) { if (!selectionState.view() - || selectionState.selectedModelNodes().isEmpty()) + || !selectionState.hasSingleSelectedModelNode()) return; try { - selectionState.selectedModelNodes().first().variantProperty("Layout.fillWidth").setValue(selectionState.toggled()); + selectionState.firstSelectedModelNode().variantProperty("Layout.fillWidth").setValue(selectionState.toggled()); } catch (RewritingException &e) { //better save then sorry QMessageBox::warning(0, "Error", e.description()); } @@ -261,11 +261,11 @@ void setFillWidth(const SelectionContext &selectionState) void setFillHeight(const SelectionContext &selectionState) { if (!selectionState.view() - || selectionState.selectedModelNodes().isEmpty()) + || !selectionState.hasSingleSelectedModelNode()) return; try { - selectionState.selectedModelNodes().first().variantProperty("Layout.fillHeight").setValue(selectionState.toggled()); + selectionState.firstSelectedModelNode().variantProperty("Layout.fillHeight").setValue(selectionState.toggled()); } catch (RewritingException &e) { //better save then sorry QMessageBox::warning(0, "Error", e.description()); } @@ -623,7 +623,7 @@ void layoutFlowPositioner(const SelectionContext &selectionState) void layoutRowLayout(const SelectionContext &selectionState) { if (!selectionState.view() - || selectionState.selectedModelNodes().isEmpty()) + || !selectionState.hasSingleSelectedModelNode()) return; static TypeName rowLayoutType = "QtQuick.Layouts.RowLayout"; @@ -671,7 +671,7 @@ void layoutRowLayout(const SelectionContext &selectionState) void layoutColumnLayout(const SelectionContext &selectionState) { if (!selectionState.view() - || selectionState.selectedModelNodes().isEmpty()) + || !selectionState.hasSingleSelectedModelNode()) return; static TypeName columnLayoutType = "QtQuick.Layouts.ColumnLayout"; @@ -719,7 +719,7 @@ void layoutColumnLayout(const SelectionContext &selectionState) void layoutGridLayout(const SelectionContext &selectionState) { if (!selectionState.view() - || selectionState.selectedModelNodes().isEmpty()) + || !selectionState.hasSingleSelectedModelNode()) return; static TypeName gridLayoutType = "QtQuick.Layouts.GridLayout"; diff --git a/src/plugins/qmldesigner/components/componentcore/selectioncontext.cpp b/src/plugins/qmldesigner/components/componentcore/selectioncontext.cpp index 5f417e9883e..085e065188b 100644 --- a/src/plugins/qmldesigner/components/componentcore/selectioncontext.cpp +++ b/src/plugins/qmldesigner/components/componentcore/selectioncontext.cpp @@ -69,11 +69,21 @@ ModelNode SelectionContext::currentSingleSelectedNode() const return view()->singleSelectedModelNode(); } +ModelNode SelectionContext::firstSelectedModelNode() const +{ + return view()->firstSelectedModelNode(); +} + QList SelectionContext::selectedModelNodes() const { return view()->selectedModelNodes(); } +bool SelectionContext::hasSingleSelectedModelNode() const +{ + return view()->hasSelectedModelNodes(); +} + AbstractView *SelectionContext::view() const { return m_view.data(); diff --git a/src/plugins/qmldesigner/components/componentcore/selectioncontext.h b/src/plugins/qmldesigner/components/componentcore/selectioncontext.h index c0bde52915e..be98affd6f9 100644 --- a/src/plugins/qmldesigner/components/componentcore/selectioncontext.h +++ b/src/plugins/qmldesigner/components/componentcore/selectioncontext.h @@ -48,7 +48,9 @@ public: bool isInBaseState() const; ModelNode currentSingleSelectedNode() const; + ModelNode firstSelectedModelNode() const; QList selectedModelNodes() const; + bool hasSingleSelectedModelNode() const; AbstractView *view() const;