[Bf-extensions-cvs] [cc1a2f5a] master: Collection Manager: Clear RTO history on destructive actions. Task: T69577

Ryan Inch noreply at git.blender.org
Wed Apr 15 10:06:12 CEST 2020


Commit: cc1a2f5af8681158905be040099ea14bb814b331
Author: Ryan Inch
Date:   Wed Apr 15 04:02:49 2020 -0400
Branches: master
https://developer.blender.org/rBAcc1a2f5af8681158905be040099ea14bb814b331

Collection Manager: Clear RTO history on destructive actions. Task: T69577

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

M	object_collection_manager/__init__.py
M	object_collection_manager/operator_utils.py
M	object_collection_manager/operators.py

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

diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py
index 4a2c9bf6..ba6b5b19 100644
--- a/object_collection_manager/__init__.py
+++ b/object_collection_manager/__init__.py
@@ -22,7 +22,7 @@ bl_info = {
     "name": "Collection Manager",
     "description": "Manage collections and their objects",
     "author": "Ryan Inch",
-    "version": (2,7,7),
+    "version": (2,7,8),
     "blender": (2, 80, 0),
     "location": "View3D - Object Mode (Shortcut - M)",
     "warning": '',  # used for warning icon and text in addons panel
diff --git a/object_collection_manager/operator_utils.py b/object_collection_manager/operator_utils.py
index 02644954..f99d870b 100644
--- a/object_collection_manager/operator_utils.py
+++ b/object_collection_manager/operator_utils.py
@@ -161,8 +161,9 @@ def isolate_rto(cls, self, view_layer, rto, *, children=False):
 
 def toggle_children(self, view_layer, rto):
     laycol_ptr = layer_collections[self.name]["ptr"]
-    # reset rto history
+    # clear rto history
     del rto_history[rto][view_layer]
+    rto_history[rto+"_all"].pop(view_layer, None)
 
     # toggle rto state
     state = not get_rto(laycol_ptr, rto)
@@ -198,10 +199,11 @@ def activate_all_rtos(view_layer, rto):
         for x, item in enumerate(layer_collections.values()):
             set_rto(item["ptr"], rto, history[x])
 
+        # clear rto history
         del rto_history[rto+"_all"][view_layer]
 
 
-def invert_rtos(rto):
+def invert_rtos(view_layer, rto):
     if rto == "exclude":
         orig_values = []
 
@@ -215,8 +217,11 @@ def invert_rtos(rto):
         for item in layer_collections.values():
             set_rto(item["ptr"], rto, not get_rto(item["ptr"], rto))
 
+    # clear rto history
+    rto_history[rto].pop(view_layer, None)
 
-def copy_rtos(rto):
+
+def copy_rtos(view_layer, rto):
     if not copy_buffer["RTO"]:
         # copy
         copy_buffer["RTO"] = rto
@@ -228,12 +233,16 @@ def copy_rtos(rto):
         for x, laycol in enumerate(layer_collections.values()):
             set_rto(laycol["ptr"], rto, copy_buffer["values"][x])
 
+        # clear rto history
+        rto_history[rto].pop(view_layer, None)
+        del rto_history[rto+"_all"][view_layer]
+
         # clear copy buffer
         copy_buffer["RTO"] = ""
         copy_buffer["values"].clear()
 
 
-def swap_rtos(rto):
+def swap_rtos(view_layer, rto):
     if not swap_buffer["A"]["values"]:
         # get A
         swap_buffer["A"]["RTO"] = rto
@@ -251,6 +260,16 @@ def swap_rtos(rto):
             set_rto(laycol["ptr"], swap_buffer["A"]["RTO"], swap_buffer["B"]["values"][x])
             set_rto(laycol["ptr"], swap_buffer["B"]["RTO"], swap_buffer["A"]["values"][x])
 
+
+        # clear rto history
+        swap_a = swap_buffer["A"]["RTO"]
+        swap_b = swap_buffer["B"]["RTO"]
+
+        rto_history[swap_a].pop(view_layer, None)
+        rto_history[swap_a+"_all"].pop(view_layer, None)
+        rto_history[swap_b].pop(view_layer, None)
+        rto_history[swap_b+"_all"].pop(view_layer, None)
+
         # clear swap buffer
         swap_buffer["A"]["RTO"] = ""
         swap_buffer["A"]["values"].clear()
diff --git a/object_collection_manager/operators.py b/object_collection_manager/operators.py
index efb9e40b..11d75171 100644
--- a/object_collection_manager/operators.py
+++ b/object_collection_manager/operators.py
@@ -417,13 +417,13 @@ class CMUnExcludeAllOperator(Operator):
             clear_swap("exclude")
 
         elif modifiers == {"ctrl"}:
-            copy_rtos("exclude")
+            copy_rtos(view_layer, "exclude")
 
         elif modifiers == {"ctrl", "alt"}:
-            swap_rtos("exclude")
+            swap_rtos(view_layer, "exclude")
 
         elif modifiers == {"shift"}:
-            invert_rtos("exclude")
+            invert_rtos(view_layer, "exclude")
 
         else:
             activate_all_rtos(view_layer, "exclude")
@@ -519,13 +519,13 @@ class CMUnRestrictSelectAllOperator(Operator):
             clear_swap("select")
 
         elif modifiers == {"ctrl"}:
-            copy_rtos("select")
+            copy_rtos(view_layer, "select")
 
         elif modifiers == {"ctrl", "alt"}:
-            swap_rtos("select")
+            swap_rtos(view_layer, "select")
 
         elif modifiers == {"shift"}:
-            invert_rtos("select")
+            invert_rtos(view_layer, "select")
 
         else:
             activate_all_rtos(view_layer, "select")
@@ -621,13 +621,13 @@ class CMUnHideAllOperator(Operator):
             clear_swap("hide")
 
         elif modifiers == {"ctrl"}:
-            copy_rtos("hide")
+            copy_rtos(view_layer, "hide")
 
         elif modifiers == {"ctrl", "alt"}:
-            swap_rtos("hide")
+            swap_rtos(view_layer, "hide")
 
         elif modifiers == {"shift"}:
-            invert_rtos("hide")
+            invert_rtos(view_layer, "hide")
 
         else:
             activate_all_rtos(view_layer, "hide")
@@ -723,13 +723,13 @@ class CMUnDisableViewportAllOperator(Operator):
             clear_swap("disable")
 
         elif modifiers == {"ctrl"}:
-            copy_rtos("disable")
+            copy_rtos(view_layer, "disable")
 
         elif modifiers == {"ctrl", "alt"}:
-            swap_rtos("disable")
+            swap_rtos(view_layer, "disable")
 
         elif modifiers == {"shift"}:
-            invert_rtos("disable")
+            invert_rtos(view_layer, "disable")
 
         else:
             activate_all_rtos(view_layer, "disable")
@@ -826,13 +826,13 @@ class CMUnDisableRenderAllOperator(Operator):
             clear_swap("render")
 
         elif modifiers == {"ctrl"}:
-            copy_rtos("render")
+            copy_rtos(view_layer, "render")
 
         elif modifiers == {"ctrl", "alt"}:
-            swap_rtos("render")
+            swap_rtos(view_layer, "render")
 
         elif modifiers == {"shift"}:
-            invert_rtos("render")
+            invert_rtos(view_layer, "render")
 
         else:
             activate_all_rtos(view_layer, "render")



More information about the Bf-extensions-cvs mailing list