diff options
author | Ryan Inch <mythologylover75@gmail.com> | 2020-04-10 07:35:37 +0300 |
---|---|---|
committer | Ryan Inch <mythologylover75@gmail.com> | 2020-04-10 07:35:37 +0300 |
commit | 19e2083f9f6c4cca169c3d763456340029c54fd8 (patch) | |
tree | cdd50631e3ba1df30c1c4d6ef01171f5fc29254a | |
parent | 2e88f2ed403d2c1e287d77d94a9f6e268cdbac95 (diff) |
Collection Manager: Fix View Layer update. Task: T69577
Make QCD 3D View header widget update immediately
after changing View Layers.
Prevent unnecessary View Layer update
in Collection Manager popup.
-rw-r--r-- | object_collection_manager/__init__.py | 2 | ||||
-rw-r--r-- | object_collection_manager/internals.py | 7 | ||||
-rw-r--r-- | object_collection_manager/operators.py | 6 | ||||
-rw-r--r-- | object_collection_manager/qcd_init.py | 2 | ||||
-rw-r--r-- | object_collection_manager/qcd_operators.py | 13 | ||||
-rw-r--r-- | object_collection_manager/ui.py | 19 |
6 files changed, 32 insertions, 17 deletions
diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py index 54a0bba2..455670fc 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,5,2), + "version": (2,5,3), "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/internals.py b/object_collection_manager/internals.py index 594756c9..6b962119 100644 --- a/object_collection_manager/internals.py +++ b/object_collection_manager/internals.py @@ -408,6 +408,13 @@ def get_move_active(): return bpy.data.objects[move_active] if move_active else None +def update_qcd_header(): + cm = bpy.context.scene.collection_manager + cm.update_header.clear() + new_update_header = cm.update_header.add() + new_update_header.name = "updated" + + class CMSendReport(Operator): bl_label = "Send Report" bl_idname = "view3d.cm_send_report" diff --git a/object_collection_manager/operators.py b/object_collection_manager/operators.py index 1094e578..1aca6c3c 100644 --- a/object_collection_manager/operators.py +++ b/object_collection_manager/operators.py @@ -42,6 +42,7 @@ from .internals import ( get_modifiers, get_move_selection, get_move_active, + update_qcd_header, send_report, ) @@ -255,10 +256,7 @@ class CMSetCollectionOperator(Operator): pass # update qcd header UI - cm = bpy.context.scene.collection_manager - cm.update_header.clear() - new_update_header = cm.update_header.add() - new_update_header.name = "updated" + update_qcd_header() return {'FINISHED'} diff --git a/object_collection_manager/qcd_init.py b/object_collection_manager/qcd_init.py index 0bef6e44..69bb4621 100644 --- a/object_collection_manager/qcd_init.py +++ b/object_collection_manager/qcd_init.py @@ -59,6 +59,7 @@ def register_qcd(): register_qcd_view_hotkeys() bpy.types.VIEW3D_HT_header.append(ui.view3d_header_qcd_slots) + bpy.types.TOPBAR_HT_upper_bar.append(ui.view_layer_update) def register_qcd_view_hotkeys(): wm = bpy.context.window_manager @@ -101,6 +102,7 @@ def register_qcd_view_hotkeys(): def unregister_qcd(): bpy.types.VIEW3D_HT_header.remove(ui.view3d_header_qcd_slots) + bpy.types.TOPBAR_HT_upper_bar.remove(ui.view_layer_update) for cls in qcd_classes: bpy.utils.unregister_class(cls) diff --git a/object_collection_manager/qcd_operators.py b/object_collection_manager/qcd_operators.py index 679d35be..c39a9cf3 100644 --- a/object_collection_manager/qcd_operators.py +++ b/object_collection_manager/qcd_operators.py @@ -38,7 +38,8 @@ from .internals import ( update_property_group, get_modifiers, get_move_selection, - get_move_active + get_move_active, + update_qcd_header, ) from .operators import rto_history @@ -115,10 +116,7 @@ class MoveToQCDSlot(Operator): pass # update header UI - cm = bpy.context.scene.collection_manager - cm.update_header.clear() - new_update_header = cm.update_header.add() - new_update_header.name = "updated" + update_qcd_header() return {'FINISHED'} @@ -240,10 +238,7 @@ class ViewQCDSlot(Operator): context.view_layer.active_layer_collection = qcd_laycol # update header UI - cm = bpy.context.scene.collection_manager - cm.update_header.clear() - new_update_header = cm.update_header.add() - new_update_header.name = "updated" + update_qcd_header() view_layer = context.view_layer.name if view_layer in rto_history["exclude"]: diff --git a/object_collection_manager/ui.py b/object_collection_manager/ui.py index 0e2739c2..9de8f3e4 100644 --- a/object_collection_manager/ui.py +++ b/object_collection_manager/ui.py @@ -18,6 +18,8 @@ # Copyright 2011, Ryan Inch +import bpy + from bpy.types import ( Operator, Panel, @@ -37,7 +39,8 @@ from .internals import ( update_property_group, generate_state, get_move_selection, - get_move_active + get_move_active, + update_qcd_header, ) from .operators import ( @@ -66,13 +69,17 @@ class CollectionManager(Operator): self.window_open = True def draw(self, context): + cls = CollectionManager layout = self.layout cm = context.scene.collection_manager view_layer = context.view_layer - if view_layer.name != self.last_view_layer: + if view_layer.name != cls.last_view_layer: + if context.preferences.addons[__package__].preferences.enable_qcd: + bpy.app.timers.register(update_qcd_header) + update_collection_tree(context) - self.last_view_layer = view_layer.name + cls.last_view_layer = view_layer.name title_row = layout.split(factor=0.5) main = title_row.row() @@ -646,6 +653,12 @@ def view3d_header_qcd_slots(self, context): idx += 1 +def view_layer_update(self, context): + if context.view_layer.name != CollectionManager.last_view_layer: + bpy.app.timers.register(update_qcd_header) + CollectionManager.last_view_layer = context.view_layer.name + + def get_active_icon(context, qcd_laycol): global last_icon_theme_text global last_icon_theme_text_sel |