[Bf-blender-cvs] [98bb22a2070] master: Fix object mode lasso de-selection
Campbell Barton
noreply at git.blender.org
Fri Mar 1 04:09:33 CET 2019
Commit: 98bb22a207037c32ab3dfa3fb3c0df343c611dfb
Author: Campbell Barton
Date: Fri Mar 1 14:08:05 2019 +1100
Branches: master
https://developer.blender.org/rB98bb22a207037c32ab3dfa3fb3c0df343c611dfb
Fix object mode lasso de-selection
Lasso actions that only de-selected were handled as if nothing changed.
===================================================================
M source/blender/editors/space_view3d/view3d_select.c
===================================================================
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 94162a5e484..1d36b5fd79c 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -151,27 +151,33 @@ void ED_view3d_viewcontext_init_object(ViewContext *vc, Object *obact)
/** \name Internal Object Utilities
* \{ */
-static void object_deselect_all_visible(ViewLayer *view_layer, View3D *v3d)
+static bool object_deselect_all_visible(ViewLayer *view_layer, View3D *v3d)
{
- Base *base;
-
- for (base = view_layer->object_bases.first; base; base = base->next) {
- if (BASE_SELECTABLE(v3d, base)) {
- ED_object_base_select(base, BA_DESELECT);
+ bool changed = false;
+ for (Base *base = view_layer->object_bases.first; base; base = base->next) {
+ if (base->flag & BASE_SELECTED) {
+ if (BASE_SELECTABLE(v3d, base)) {
+ ED_object_base_select(base, BA_DESELECT);
+ changed = true;
+ }
}
}
+ return changed;
}
/* deselect all except b */
-static void object_deselect_all_except(ViewLayer *view_layer, Base *b)
+static bool object_deselect_all_except(ViewLayer *view_layer, Base *b)
{
+ bool changed = false;
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
if (base->flag & BASE_SELECTED) {
if (b != base) {
ED_object_base_select(base, BA_DESELECT);
+ changed = true;
}
}
}
+ return changed;
}
/** \} */
@@ -445,11 +451,11 @@ static void do_lasso_select_objects(
View3D *v3d = vc->v3d;
Base *base;
+ bool changed = false;
if (SEL_OP_USE_PRE_DESELECT(sel_op)) {
- object_deselect_all_visible(vc->view_layer, vc->v3d);
+ changed = object_deselect_all_visible(vc->view_layer, vc->v3d);
}
- bool changed = false;
for (base = vc->view_layer->object_bases.first; base; base = base->next) {
if (BASE_SELECTABLE(v3d, base)) { /* use this to avoid un-needed lasso lookups */
const bool is_select = base->flag & BASE_SELECTED;
More information about the Bf-blender-cvs
mailing list