diff --git a/source/blender/editors/space_view3d/view3d_select.cc b/source/blender/editors/space_view3d/view3d_select.cc index e9e3ccd58a8..daa92ca9cd9 100644 --- a/source/blender/editors/space_view3d/view3d_select.cc +++ b/source/blender/editors/space_view3d/view3d_select.cc @@ -3088,12 +3088,13 @@ static int view3d_select_exec(bContext *C, wmOperator *op) Object *obedit = CTX_data_edit_object(C); Object *obact = CTX_data_active_object(C); - if (obact && obact->type == OB_GPENCIL_LEGACY && GPENCIL_ANY_MODE((bGPdata *)obact->data)) { - /* Prevent acting on Grease Pencil (when not in object mode), it implements its own selection - * operator in other modes. We might still fall trough to here (because that operator uses - * OPERATOR_PASS_THROUGH to make tweak work) but if we don't stop here code below assumes we - * are in object mode it might falsely toggle object selection. Alternatively, this could be - * put in the poll function instead. */ + if (obact && obact->type == OB_GPENCIL_LEGACY && GPENCIL_ANY_MODE((bGPdata *)obact->data) && + (BKE_object_pose_armature_get_with_wpaint_check(obact) == nullptr)) { + /* Prevent acting on Grease Pencil (when not in object mode -- or not in weight-paint + pose + * selection), it implements its own selection operator in other modes. We might still fall + * trough to here (because that operator uses OPERATOR_PASS_THROUGH to make tweak work) but if + * we don't stop here code below assumes we are in object mode it might falsely toggle object + * selection. Alternatively, this could be put in the poll function instead. */ return OPERATOR_PASS_THROUGH | OPERATOR_CANCELLED; }