[Bf-blender-cvs] [c40ec17fd35] soc-2019-outliner: Outliner: Support selecting other objects when in edit/pose modes

Nathan Craddock noreply at git.blender.org
Tue Jul 9 06:47:55 CEST 2019


Commit: c40ec17fd358e16c360fb259da3668a09a2ab023
Author: Nathan Craddock
Date:   Mon Jul 8 22:45:02 2019 -0600
Branches: soc-2019-outliner
https://developer.blender.org/rBc40ec17fd358e16c360fb259da3668a09a2ab023

Outliner: Support selecting other objects when in edit/pose modes

When selecting in the outliner, rather than activating other
elements when in edit or pose mode, just select. This is useful
for selecting other objects while in edit/pose modes for adding
parents, hooks, etc.

===================================================================

M	source/blender/editors/space_outliner/outliner_select.c

===================================================================

diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c
index 6b6774f19a9..cbf17ad1e58 100644
--- a/source/blender/editors/space_outliner/outliner_select.c
+++ b/source/blender/editors/space_outliner/outliner_select.c
@@ -1123,9 +1123,8 @@ static void do_outliner_item_activate_tree_element(bContext *C,
                                                    const bool extend,
                                                    const bool recursive)
 {
-  /* Set TreeStore flags for active element */
-  outliner_flag_set(&soops->tree, TSE_ACTIVE, false);
-  tselem->flag |= TSE_ACTIVE;
+  TreeElement *te_active = outliner_find_active_element(&soops->tree);
+  Object *obact = OBACT(view_layer);
 
   /* Always makes active object, except for some specific types. */
   if (ELEM(tselem->type,
@@ -1143,6 +1142,10 @@ static void do_outliner_item_activate_tree_element(bContext *C,
   else if (tselem->type == TSE_POSE_BASE) {
     /* Support pose mode toggle, keeping the active object as is. */
   }
+  else if (ELEM(obact->mode, OB_MODE_EDIT, OB_MODE_POSE) && (te != te_active)) {
+    /* Select rather than activate other elements when in edit or pose mode */
+    return;
+  }
   else if (soops->flag & SO_SYNC_SELECTION) {
     tree_element_set_active_object(C,
                                    scene,
@@ -1154,6 +1157,9 @@ static void do_outliner_item_activate_tree_element(bContext *C,
                                    recursive && tselem->type == 0);
   }
 
+  outliner_flag_set(&soops->tree, TSE_ACTIVE, false);
+  tselem->flag |= TSE_ACTIVE;
+
   if (tselem->type == 0) {  // the lib blocks
     /* editmode? */
     if (te->idcode == ID_SCE) {



More information about the Bf-blender-cvs mailing list