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.
This commit is contained in:
parent
2e88f2ed40
commit
19e2083f9f
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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'}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"]:
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue