diff --git a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp index 9918b67ba9203466dbcc95d1837b1af6676ba502..8eaf7299fee36efad6e60947d418990453a6d578 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp @@ -160,6 +160,14 @@ void FormEditorItem::setAttentionHighlight(double value) update(); } +void FormEditorItem::setHighlightBoundingRect(bool highlight) +{ + if (m_highlightBoundingRect != highlight) { + m_highlightBoundingRect = highlight; + update(); + } +} + FormEditorItem::~FormEditorItem() { scene()->removeItemFromHash(this); @@ -202,7 +210,10 @@ void FormEditorItem::paintBoundingRect(QPainter *painter) const } break; case FormEditorScene::NormalMode: { - pen.setColor(Qt::gray); + if (m_highlightBoundingRect) + pen.setColor("#AAAAAA"); + else + pen.setColor("#888888"); } break; } @@ -232,7 +243,7 @@ void FormEditorItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, painter->setRenderHint(QPainter::Antialiasing, false); - if (scene()->showBoundingRects()) + if (scene()->showBoundingRects() || m_highlightBoundingRect) paintBoundingRect(painter); painter->restore(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditoritem.h b/src/plugins/qmldesigner/components/formeditor/formeditoritem.h index b5ffc769923b661a32fbd221ee3a286886e0d728..9594f4a17a5b3811058a555b40a8fb7fa6ce32e3 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditoritem.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditoritem.h @@ -96,6 +96,8 @@ public: FormEditorView *formEditorView() const; + void setHighlightBoundingRect(bool highlight); + protected: AbstractFormEditorTool* tool() const; void paintBoundingRect(QPainter *painter) const; @@ -118,6 +120,7 @@ private: // variables QRectF m_boundingRect; double m_borderWidth; double m_opacity; + bool m_highlightBoundingRect; }; diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp index c521d1935cae3065bc7cac15c446f625b9469184..be832802a7ab7d350e2027d9257538ffb5cb9594 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp @@ -360,6 +360,16 @@ void FormEditorScene::clearFormEditorItems() } } +void FormEditorScene::highlightBoundingRect(FormEditorItem *highlighItem) +{ + foreach(FormEditorItem *item, allFormEditorItems()) { + if (item == highlighItem) + item->setHighlightBoundingRect(true); + else + item->setHighlightBoundingRect(false); + } +} + void FormEditorScene::setShowBoundingRects(bool show) { m_showBoundingRects = show; diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.h b/src/plugins/qmldesigner/components/formeditor/formeditorscene.h index bc521fb02eea860b1ef2ba10abb5f0280f80d45d..ec1eebd22ec790d06e49ab5545416504fffe2ffb 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.h @@ -93,6 +93,8 @@ public: void clearFormEditorItems(); + void highlightBoundingRect(FormEditorItem *formEditorItem); + public slots: void setShowBoundingRects(bool show); bool showBoundingRects() const; diff --git a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp index 3588f9e4b260a98048dbb82a99b8a69212929e27..b0a03d137b7c15ec5ea24022882e7df5c17068c6 100644 --- a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp @@ -134,6 +134,24 @@ void SelectionTool::hoverMoveEvent(const QList<QGraphicsItem*> &itemList, if (topSelectedItemIsMovable(itemList)) view()->changeToMoveTool(); + + + FormEditorItem *topSelectableItem = 0; + + foreach(QGraphicsItem* item, itemList) + { + FormEditorItem *formEditorItem = FormEditorItem::fromQGraphicsItem(item); + + if (formEditorItem + && !formEditorItem->qmlItemNode().isRootNode() + && (formEditorItem->qmlItemNode().hasShowContent() || !m_selectOnlyContentItems)) + { + topSelectableItem = formEditorItem; + break; + } + } + + scene()->highlightBoundingRect(topSelectableItem); } void SelectionTool::mouseReleaseEvent(const QList<QGraphicsItem*> &/*itemList*/,