diff options
author | Ryan Inch <mythologylover75@gmail.com> | 2020-04-18 09:43:46 +0300 |
---|---|---|
committer | Ryan Inch <mythologylover75@gmail.com> | 2020-04-18 09:43:46 +0300 |
commit | eedd49c55e70b0a3e118400e1c7ad2e052de975a (patch) | |
tree | 2363a58cce036bfa53d0145adcdb5bf9503b197a | |
parent | 8378eccbc9e8886a10e6906d57a340a49b4a4ea4 (diff) |
Collection Manager: Expander fix. Task T69577
Fix expanded and expand history not getting updated
on collection removal.
-rw-r--r-- | object_collection_manager/__init__.py | 2 | ||||
-rw-r--r-- | object_collection_manager/operators.py | 11 | ||||
-rw-r--r-- | object_collection_manager/ui.py | 12 |
3 files changed, 22 insertions, 3 deletions
diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py index d750342f..943e5b0f 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,10), + "version": (2,7,11), "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/operators.py b/object_collection_manager/operators.py index b1d4d4ca..c1259acd 100644 --- a/object_collection_manager/operators.py +++ b/object_collection_manager/operators.py @@ -851,6 +851,7 @@ class CMRemoveCollectionOperator(Operator): def execute(self, context): global rto_history + global expand_history global qcd_slots cm = context.scene.collection_manager @@ -872,8 +873,16 @@ class CMRemoveCollectionOperator(Operator): parent_collection.children.link(subcollection) - # remove collection and update tree view + # remove collection, update expanded, and update tree view bpy.data.collections.remove(collection) + expanded.discard(self.collection_name) + + if expand_history["target"] == self.collection_name: + expand_history["target"] = "" + + if self.collection_name in expand_history["history"]: + expand_history["history"].remove(self.collection_name) + update_property_group(context) diff --git a/object_collection_manager/ui.py b/object_collection_manager/ui.py index d4a4f49e..61c44a5b 100644 --- a/object_collection_manager/ui.py +++ b/object_collection_manager/ui.py @@ -331,7 +331,7 @@ class CollectionManager(Operator): except KeyError: # Master Collection is special and not part of regular collections cm.cm_list_index = -1 - # check if history/buffer state still correct + # check if expanded & history/buffer state still correct if collection_state: new_state = generate_state() @@ -344,6 +344,16 @@ class CollectionManager(Operator): swap_buffer["B"]["RTO"] = "" swap_buffer["B"]["values"].clear() + for name in list(expanded): + laycol = layer_collections.get(name) + if not laycol or not laycol["has_children"]: + expanded.remove(name) + + for name in list(expand_history["history"]): + laycol = layer_collections.get(name) + if not laycol or not laycol["has_children"]: + expand_history["history"].remove(name) + for rto, history in rto_history.items(): if view_layer.name in history: del history[view_layer.name] |