[Bf-extensions-cvs] [19e2083f] master: Collection Manager: Fix View Layer update. Task: T69577
Ryan Inch
noreply at git.blender.org
Fri Apr 10 07:38:08 CEST 2020
Commit: 19e2083f9f6c4cca169c3d763456340029c54fd8
Author: Ryan Inch
Date: Fri Apr 10 00:35:37 2020 -0400
Branches: master
https://developer.blender.org/rBA19e2083f9f6c4cca169c3d763456340029c54fd8
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.
===================================================================
M object_collection_manager/__init__.py
M object_collection_manager/internals.py
M object_collection_manager/operators.py
M object_collection_manager/qcd_init.py
M object_collection_manager/qcd_operators.py
M object_collection_manager/ui.py
===================================================================
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
More information about the Bf-extensions-cvs
mailing list