[Bf-blender-cvs] [b1a88dab437] soc-2019-outliner: Outliner: Remove range select restrictions

Nathan Craddock noreply at git.blender.org
Sat Jun 1 06:39:33 CEST 2019


Commit: b1a88dab4372f257bd6ea997495d657ec898a8c9
Author: Nathan Craddock
Date:   Fri May 31 22:22:58 2019 -0600
Branches: soc-2019-outliner
https://developer.blender.org/rBb1a88dab4372f257bd6ea997495d657ec898a8c9

Outliner: Remove range select restrictions

Removes restrictions for range select requiring a visible active element.
Now if no active element is visible the shift+clicked element is set as active and selected.
This way no warnings need to be reported.

Also silenced some warnings

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

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 21fe27afe62..cfbfe16e83e 100644
--- a/source/blender/editors/space_outliner/outliner_select.c
+++ b/source/blender/editors/space_outliner/outliner_select.c
@@ -45,7 +45,6 @@
 #include "BKE_layer.h"
 #include "BKE_main.h"
 #include "BKE_object.h"
-#include "BKE_report.h"
 #include "BKE_paint.h"
 #include "BKE_scene.h"
 #include "BKE_sequencer.h"
@@ -1251,26 +1250,21 @@ static void do_outliner_range_select_recursive(ListBase *lb,
 }
 
 /* Select a range of items between cursor and active element */
-static bool do_outliner_range_select(SpaceOutliner *soops, const TreeElement *cursor_element)
+static void do_outliner_range_select(SpaceOutliner *soops, TreeElement *cursor)
 {
-  TreeElement *active_element = outliner_find_active_element(&soops->tree);
+  TreeElement *active = outliner_find_active_element(&soops->tree);
 
-  /* Once synced selection is implemented this check may not be needed */
-  if (!active_element) {
-    return false;
-  }
+  outliner_flag_set(&soops->tree, TSE_SELECTED, false);
 
-  /* Range select requires the active element to be visible */
-  if (!outliner_is_element_visible(&soops->tree, active_element)) {
-    return false;
+  /* Once synced selection is implemented this check for active may not be needed */
+  /* Range select requires the active element to be visible, so select if not visible */
+  if (!active || !outliner_is_element_visible(&soops->tree, active)) {
+    TREESTORE(cursor)->flag |= TSE_SELECTED | TSE_ACTIVE;
+    return;
   }
 
-  outliner_flag_set(&soops->tree, TSE_SELECTED, false);
-
   bool selecting = false;
-  do_outliner_range_select_recursive(&soops->tree, active_element, cursor_element, &selecting);
-
-  return true;
+  do_outliner_range_select_recursive(&soops->tree, active, cursor, &selecting);
 }
 
 static void outliner_item_toggle_closed(TreeElement *te, const bool toggle_children)
@@ -1323,7 +1317,6 @@ void outliner_item_do_activate_from_tree_element(
  * May expend/collapse branches or activate items.
  * */
 static int outliner_item_do_activate_from_cursor(bContext *C,
-                                                 wmOperator *op,
                                                  const int mval[2],
                                                  const bool extend,
                                                  const bool range,
@@ -1362,10 +1355,7 @@ static int outliner_item_do_activate_from_cursor(bContext *C,
     TreeStoreElem *activate_tselem = TREESTORE(activate_te);
 
     if (range) {
-      if (!do_outliner_range_select(soops, activate_te)) {
-        BKE_report(op->reports, RPT_ERROR, "Range select requires a visible active element");
-        return OPERATOR_CANCELLED;
-      }
+      do_outliner_range_select(soops, activate_te);
     }
     else {
       outliner_item_select(soops, activate_te, extend, extend);
@@ -1397,7 +1387,7 @@ static int outliner_item_activate_invoke(bContext *C, wmOperator *op, const wmEv
   const bool recursive = RNA_boolean_get(op->ptr, "recursive");
   const bool deselect_all = RNA_boolean_get(op->ptr, "deselect_all");
   return outliner_item_do_activate_from_cursor(
-      C, op, event->mval, extend, range, recursive, deselect_all);
+      C, event->mval, extend, range, recursive, deselect_all);
 }
 
 void OUTLINER_OT_item_activate(wmOperatorType *ot)



More information about the Bf-blender-cvs mailing list