From a51530965e2a4ef299b55982f0a9f1174c234178 Mon Sep 17 00:00:00 2001 From: tetektoza Date: Thu, 1 Jan 2026 17:47:08 +0100 Subject: [PATCH 1/2] Gui: Prevent whole-object highlight when picked list is enabled Removed the logic that forced `onTop=1` when `needPickedList()` is true in View3DInventorSelection. This was causing the entire object to be highlighted instead of just the selected sub-element when the "Picked object list" option was enabled. --- src/Gui/View3DInventorSelection.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Gui/View3DInventorSelection.cpp b/src/Gui/View3DInventorSelection.cpp index b9ffd01b30..9ba72ddb04 100644 --- a/src/Gui/View3DInventorSelection.cpp +++ b/src/Gui/View3DInventorSelection.cpp @@ -191,10 +191,7 @@ void View3DInventorSelection::checkGroupOnTop(const SelectionChanges& Reason) // onTop==2 means on top only if whole object is selected, // onTop==3 means on top only if some sub-element is selected // onTop==1 means either - if (Gui::Selection().needPickedList()) { - onTop = 1; - } - else if (vp->OnTopWhenSelected.getValue()) { + if (vp->OnTopWhenSelected.getValue()) { onTop = vp->OnTopWhenSelected.getValue(); } else { From 2c8d13135ad15f587dfe40353534c129e030511d Mon Sep 17 00:00:00 2001 From: tetektoza Date: Thu, 1 Jan 2026 21:12:09 +0100 Subject: [PATCH 2/2] Part: Remove `needPickedList` mat override to prevent rendering artifact The `needPickedList` check in `SoBrepFaceSet` was triggering unnecessary material override processing that caused face clipping artifacts when the "Picked object list" option was enabled in Selection View. This check has been removed as the picked list functionality works independently of the rendering path. --- src/Mod/Part/Gui/SoBrepFaceSet.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/Mod/Part/Gui/SoBrepFaceSet.cpp b/src/Mod/Part/Gui/SoBrepFaceSet.cpp index f5b4d0daa5..c1ae8a5770 100644 --- a/src/Mod/Part/Gui/SoBrepFaceSet.cpp +++ b/src/Mod/Part/Gui/SoBrepFaceSet.cpp @@ -854,20 +854,12 @@ bool SoBrepFaceSet::overrideMaterialBinding(SoGLRenderAction* action, SelContext if ((mb == SoMaterialBindingElement::OVERALL || (mb == SoMaterialBindingElement::PER_PART && diffuse_size >= partIndex.getNum())) - && ((ctx && Gui::Selection().needPickedList()) || trans0 != 0.0 - || (ctx2 && !ctx2->colors.empty()))) { + && (trans0 != 0.0 || (ctx2 && !ctx2->colors.empty()))) { state->push(); packedColors.clear(); - if (ctx && Gui::Selection().needPickedList()) { - hasTransparency = true; - trans_size = 1; - if (ctx2) { - ctx2->trans0 = trans0; - } - } - else if (ctx2) { + if (ctx2) { ctx2->trans0 = 0.0; }