Collection Manager: Expander fix. Task T69577

Fix expanded and expand history not getting updated
on collection removal.
This commit is contained in:
Ryan Inch 2020-04-18 02:43:46 -04:00 committed by Julien Duroure
parent 926d8beb55
commit 583a81397e
3 changed files with 21 additions and 7 deletions

View File

@ -22,12 +22,7 @@ bl_info = {
"name": "Collection Manager",
"description": "Manage collections and their objects",
"author": "Ryan Inch",
<<<<<<< HEAD
"version": (2,7,11),
=======
"version": (2,7,10),
>>>>>>> Collection Manager: Expander fixes. Task: T69577
"blender": (2, 80, 0),
"location": "View3D - Object Mode (Shortcut - M)",
"warning": '', # used for warning icon and text in addons panel
"doc_url": "{BLENDER_MANUAL_URL}/addons/interface/collection_manager.html",

View File

@ -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)

View File

@ -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]