From e26a47d96c7cdf80fb19a20a4ea487ead492180f Mon Sep 17 00:00:00 2001 From: Ryan Kembrey Date: Thu, 18 Sep 2025 13:30:00 +1000 Subject: [PATCH] TechDraw: Fix selections not clearing when subelements are also selected --- src/Mod/TechDraw/Gui/QGIView.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Mod/TechDraw/Gui/QGIView.cpp b/src/Mod/TechDraw/Gui/QGIView.cpp index e29a349542..9c581c9b71 100644 --- a/src/Mod/TechDraw/Gui/QGIView.cpp +++ b/src/Mod/TechDraw/Gui/QGIView.cpp @@ -197,15 +197,12 @@ QVariant QGIView::itemChange(GraphicsItemChange change, const QVariant &value) } if (change == ItemSelectedHasChanged && scene()) { - bool thisViewIsSelected = value.toBool(); - bool anyChildSelected = false; - if (!thisViewIsSelected) { // Only check children if this view is becoming unselected - anyChildSelected = - std::ranges::any_of(childItems(), [](QGraphicsItem* child) { - return child->isSelected(); - }); - } - if(thisViewIsSelected || anyChildSelected || isSelected()) { + std::vector currentSelection = Gui::Selection().getSelectionEx(); + bool isViewObjectSelected = Gui::Selection().isSelected(getViewObject()); + bool hasSelectedSubElements = + !DrawGuiUtil::getSubsForSelectedObject(currentSelection, getViewObject()).empty(); + + if (isViewObjectSelected || hasSelectedSubElements) { m_colCurrent = getSelectColor(); m_border->show(); m_label->show();