[Bf-blender-cvs] [4421eb684d0] master: Outliner: Add range extend select

Nathan Craddock noreply at git.blender.org
Tue Aug 20 01:12:45 CEST 2019


Commit: 4421eb684d08888f070622e300c791ae1c54f989
Author: Nathan Craddock
Date:   Sat Aug 17 17:06:02 2019 -0600
Branches: master
https://developer.blender.org/rB4421eb684d08888f070622e300c791ae1c54f989

Outliner: Add range extend select

Add support for ctrl+shift+lmb to default and industry compatible
keymaps to select a range without removing the existing selection.

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

M	release/scripts/presets/keyconfig/keymap_data/blender_default.py
M	release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
M	source/blender/editors/space_outliner/outliner_select.c

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

diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 8a8722a91c1..92f5b0c969b 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -707,6 +707,8 @@ def km_outliner(params):
          {"properties": [("extend", True), ("deselect_all", not params.legacy)]}),
         ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True},
          {"properties": [("extend", False), ("extend_range", True), ("deselect_all", not params.legacy)]}),
+        ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True, "shift": True},
+         {"properties": [("extend", True), ("extend_range", True), ("deselect_all", not params.legacy)]}),
         ("outliner.select_box", {"type": 'B', "value": 'PRESS'}, None),
         ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, {"properties": [("tweak", True)]}),
         ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True},
diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
index bf3ac8baa08..20f496adea9 100644
--- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
+++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
@@ -450,6 +450,8 @@ def km_outliner(params):
          {"properties": [("extend", True), ("deselect_all", True)]}),
         ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True},
          {"properties": [("extend", False), ("extend_range", True), ("deselect_all", True)]}),
+        ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True, "shift": True},
+         {"properties": [("extend", True), ("extend_range", True), ("deselect_all", True)]}),
         ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, {"properties": [("tweak", True)]}),
         ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True},
          {"properties": [("tweak", True), ("mode", "ADD")]}),
diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c
index 75219e6624f..f5ff730625a 100644
--- a/source/blender/editors/space_outliner/outliner_select.c
+++ b/source/blender/editors/space_outliner/outliner_select.c
@@ -1269,7 +1269,10 @@ static void do_outliner_range_select_recursive(ListBase *lb,
 }
 
 /* Select a range of items between cursor and active element */
-static void do_outliner_range_select(bContext *C, SpaceOutliner *soops, TreeElement *cursor)
+static void do_outliner_range_select(bContext *C,
+                                     SpaceOutliner *soops,
+                                     TreeElement *cursor,
+                                     const bool extend)
 {
   TreeElement *active = outliner_find_element_with_flag(&soops->tree, TSE_ACTIVE);
   outliner_flag_set(&soops->tree, TSE_ACTIVE_WALK, false);
@@ -1283,7 +1286,9 @@ static void do_outliner_range_select(bContext *C, SpaceOutliner *soops, TreeElem
   TreeStoreElem *tselem = TREESTORE(active);
   const bool active_selected = (tselem->flag & TSE_SELECTED);
 
-  outliner_flag_set(&soops->tree, TSE_SELECTED | TSE_ACTIVE_WALK, false);
+  if (!extend) {
+    outliner_flag_set(&soops->tree, TSE_SELECTED | TSE_ACTIVE_WALK, false);
+  }
 
   /* Select active if under cursor */
   if (active == cursor) {
@@ -1298,8 +1303,6 @@ static void do_outliner_range_select(bContext *C, SpaceOutliner *soops, TreeElem
     return;
   }
 
-  outliner_flag_set(&soops->tree, TSE_SELECTED, false);
-
   bool selecting = false;
   do_outliner_range_select_recursive(&soops->tree, active, cursor, &selecting);
 }
@@ -1380,7 +1383,7 @@ static int outliner_item_do_activate_from_cursor(bContext *C,
     TreeStoreElem *activate_tselem = TREESTORE(activate_te);
 
     if (use_range) {
-      do_outliner_range_select(C, soops, activate_te);
+      do_outliner_range_select(C, soops, activate_te, extend);
     }
     else {
       outliner_item_select(soops, activate_te, extend, extend);



More information about the Bf-blender-cvs mailing list