Collection Manager: Fix error with QCD switching. Task: T69577

This fixes an error when switching to collections with objects in
pose or weight paint mode and adds in the missing hotkeys for
these modes.
This commit is contained in:
Ryan Inch 2020-05-26 17:25:14 -04:00
parent b04d722732
commit 8b5307572f
3 changed files with 17 additions and 14 deletions

View File

@ -22,7 +22,7 @@ bl_info = {
"name": "Collection Manager",
"description": "Manage collections and their objects",
"author": "Ryan Inch",
"version": (2, 7, 25),
"version": (2, 7, 26),
"blender": (2, 80, 0),
"location": "View3D - Object Mode (Shortcut - M)",
"warning": '', # used for warning icon and text in addons panel

View File

@ -99,17 +99,18 @@ def register_qcd_view_hotkeys():
]
for key in qcd_hotkeys:
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
kmi = km.keymap_items.new('view3d.view_qcd_slot', key[0], 'PRESS', alt=key[1])
kmi.properties.slot = key[2]
kmi.properties.toggle = False
addon_qcd_view_hotkey_keymaps.append((km, kmi))
for mode in ['Object Mode', 'Pose', 'Weight Paint']:
km = wm.keyconfigs.addon.keymaps.new(name=mode)
kmi = km.keymap_items.new('view3d.view_qcd_slot', key[0], 'PRESS', alt=key[1])
kmi.properties.slot = key[2]
kmi.properties.toggle = False
addon_qcd_view_hotkey_keymaps.append((km, kmi))
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
kmi = km.keymap_items.new('view3d.view_qcd_slot', key[0], 'PRESS',shift=True, alt=key[1])
kmi.properties.slot = key[2]
kmi.properties.toggle = True
addon_qcd_view_hotkey_keymaps.append((km, kmi))
km = wm.keyconfigs.addon.keymaps.new(name=mode)
kmi = km.keymap_items.new('view3d.view_qcd_slot', key[0], 'PRESS',shift=True, alt=key[1])
kmi.properties.slot = key[2]
kmi.properties.toggle = True
addon_qcd_view_hotkey_keymaps.append((km, kmi))
def register_qcd_view_edit_mode_hotkeys():

View File

@ -201,15 +201,17 @@ class ViewQCDSlot(Operator):
locked_objs_mode = ""
for obj in context.view_layer.objects:
if obj.mode != 'OBJECT':
locked_objs.append(obj)
locked_objs_mode = obj.mode
if obj.mode not in ['POSE', 'WEIGHT_PAINT'] or obj == locked_active_obj:
locked_objs.append(obj)
locked_objs_mode = obj.mode
if self.toggle:
# check if slot can be toggled off.
for obj in qcd_laycol.collection.objects:
if obj.mode != 'OBJECT':
return {'CANCELLED'}
if obj.mode not in ['POSE', 'WEIGHT_PAINT'] or obj == locked_active_obj:
return {'CANCELLED'}
# get current child exclusion state
child_exclusion = []