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-10 07:35:37 +0300
committerRyan Inch <mythologylover75@gmail.com>2020-04-10 07:35:37 +0300
commit19e2083f9f6c4cca169c3d763456340029c54fd8 (patch)
treecdd50631e3ba1df30c1c4d6ef01171f5fc29254a
parent2e88f2ed403d2c1e287d77d94a9f6e268cdbac95 (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__.py2
-rw-r--r--object_collection_manager/internals.py7
-rw-r--r--object_collection_manager/operators.py6
-rw-r--r--object_collection_manager/qcd_init.py2
-rw-r--r--object_collection_manager/qcd_operators.py13
-rw-r--r--object_collection_manager/ui.py19
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