Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Inch <mythologylover75@gmail.com>2020-04-15 11:02:49 +0300
committerRyan Inch <mythologylover75@gmail.com>2020-04-15 11:02:49 +0300
commitcc1a2f5af8681158905be040099ea14bb814b331 (patch)
treed524dfaca20c916bd279ceb5fd6bbb6fe596d992
parent8139c91615608ce627335e3efae79d1074ba7191 (diff)
Collection Manager: Clear RTO history on destructive actions. Task: T69577
-rw-r--r--object_collection_manager/__init__.py2
-rw-r--r--object_collection_manager/operator_utils.py27
-rw-r--r--object_collection_manager/operators.py30
3 files changed, 39 insertions, 20 deletions
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")