diff --git a/src/plugins/qmldesigner/components/formeditor/boundingrect.png b/src/plugins/qmldesigner/components/formeditor/boundingrect.png new file mode 100644 index 0000000000000000000000000000000000000000..cba76cac6613704860f27167bb1eb5f0562fdc44 Binary files /dev/null and b/src/plugins/qmldesigner/components/formeditor/boundingrect.png differ diff --git a/src/plugins/qmldesigner/components/formeditor/formeditor.qrc b/src/plugins/qmldesigner/components/formeditor/formeditor.qrc index 14e0dbd0fbdfb6c455e1ed2e4ca110b4a8ebca8e..12ad311853b260e26e5f58723be95a15c08fb501 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditor.qrc +++ b/src/plugins/qmldesigner/components/formeditor/formeditor.qrc @@ -8,5 +8,6 @@ </qresource> <qresource prefix="/icon/layout"> <file>snapping.png</file> + <file>boundingrect.png</file> </qresource> </RCC> diff --git a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp index a6d7db612c3777f928dc69a02d9156fc97c59473..9918b67ba9203466dbcc95d1837b1af6676ba502 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp @@ -231,7 +231,9 @@ void FormEditorItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, qmlItemNode().paintInstance(painter); painter->setRenderHint(QPainter::Antialiasing, false); - paintBoundingRect(painter); + + if (scene()->showBoundingRects()) + paintBoundingRect(painter); painter->restore(); } diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp index 9c7c69d67a5cc73f5cfb8ac7c714afd02e7e1406..c521d1935cae3065bc7cac15c446f625b9469184 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp @@ -58,8 +58,8 @@ FormEditorScene::FormEditorScene(FormEditorWidget *view, FormEditorView *editorV m_editorView(editorView), m_formLayerItem(new LayerItem(this)), m_manipulatorLayerItem(new LayerItem(this)), - m_paintMode(NormalMode) - + m_paintMode(NormalMode), + m_showBoundingRects(true) { setSceneRect(0, 0, 1, 1); // prevent automatic calculation (causing a recursion), right size will be set later @@ -360,5 +360,16 @@ void FormEditorScene::clearFormEditorItems() } } +void FormEditorScene::setShowBoundingRects(bool show) +{ + m_showBoundingRects = show; + updateAllFormEditorItems(); +} + +bool FormEditorScene::showBoundingRects() const +{ + return m_showBoundingRects; +} + } diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.h b/src/plugins/qmldesigner/components/formeditor/formeditorscene.h index 89098ba7abc734f689857994538a64d200988aa7..bc521fb02eea860b1ef2ba10abb5f0280f80d45d 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.h @@ -93,6 +93,10 @@ public: void clearFormEditorItems(); +public slots: + void setShowBoundingRects(bool show); + bool showBoundingRects() const; + protected: void dropEvent(QGraphicsSceneDragDropEvent * event); void dragEnterEvent(QGraphicsSceneDragDropEvent * event); @@ -123,6 +127,7 @@ private: QWeakPointer<LayerItem> m_manipulatorLayerItem; ModelNode m_dragNode; PaintMode m_paintMode; + bool m_showBoundingRects; }; diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index 3c0d540bd50d1b4695ca3e3a47f12a9041e3331e..c1a941e46f7984cc9496a6cfa29f79495b353c93 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -67,6 +67,7 @@ FormEditorView::FormEditorView(QObject *parent) m_currentTool(m_selectionTool) { connect(widget()->zoomAction(), SIGNAL(zoomLevelChanged(double)), SLOT(updateGraphicsIndicators())); + connect(widget()->showBoundingRectAction(), SIGNAL(toggled(bool)), scene(), SLOT(setShowBoundingRects(bool))); } FormEditorScene* FormEditorView::scene() const diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp index 5217711fa4d43cb46f20934ad37c686209ae38b9..6c5eddde2f232d5121d2022b42aa2077987af0ee 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp @@ -90,6 +90,14 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view) m_snappingToolAction->setIcon(QPixmap(":/icon/layout/snapping.png")); connect(m_snappingToolAction.data(), SIGNAL(triggered(bool)), SLOT(changeSnappingTool(bool))); + m_showBoundingRectAction = layoutActionGroup->addAction("Toogle Bounding Rectangles (Press Key R)"); + m_showBoundingRectAction->setShortcut(Qt::Key_R); + m_showBoundingRectAction->setShortcutContext(Qt::WidgetWithChildrenShortcut); + m_showBoundingRectAction->setCheckable(true); + m_showBoundingRectAction->setChecked(true); + m_showBoundingRectAction->setIcon(QPixmap(":/icon/layout/boundingrect.png")); + + m_snappingMarginAction = new NumberSeriesAction(layoutActionGroup); m_snappingMarginAction->addEntry("no margins (0)", 0); m_snappingMarginAction->addEntry("small margin (2)", 2); @@ -179,6 +187,11 @@ QAction *FormEditorWidget::transformToolAction() const return m_transformToolAction.data(); } +QAction *FormEditorWidget::showBoundingRectAction() const +{ + return m_showBoundingRectAction.data(); +} + void FormEditorWidget::setZoomLevel(double zoomLevel) { m_graphicsView->resetTransform(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h index 2a718507f8070c069771e070171ba51856853645..2f9089b8650366338f364381f5a54a63d7c9ed31 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h @@ -53,6 +53,7 @@ public: ZoomAction *zoomAction() const; QAction *anchorToolAction() const; QAction *transformToolAction() const; + QAction *showBoundingRectAction() const; void setScene(FormEditorScene *scene); ToolBox *toolBox() const; @@ -83,6 +84,7 @@ private: QWeakPointer<QAction> m_snappingToolAction; QWeakPointer<NumberSeriesAction> m_snappingMarginAction; QWeakPointer<NumberSeriesAction> m_snappingSpacingAction; + QWeakPointer<QAction> m_showBoundingRectAction; };