From 1cc09e24c5163ccba2bcb6250da57dd649fb9151 Mon Sep 17 00:00:00 2001 From: Ryan Inch Date: Fri, 8 Jul 2022 23:32:32 -0400 Subject: Collection Manager: Fix T99142. Task: T69577 Fix duplicate keymap entries for QVT operators. --- object_collection_manager/qcd_init.py | 46 +++++++++++++++++------------------ 1 file changed, 23 insertions(+), 23 deletions(-) (limited to 'object_collection_manager/qcd_init.py') diff --git a/object_collection_manager/qcd_init.py b/object_collection_manager/qcd_init.py index 1273e6e0..c2d555f5 100644 --- a/object_collection_manager/qcd_init.py +++ b/object_collection_manager/qcd_init.py @@ -135,8 +135,8 @@ def register_qcd_view_hotkeys(): ["ZERO", True, "20"], ] - for key in qcd_hotkeys: - for mode in ['Object Mode', 'Pose', 'Weight Paint']: + for mode in ['Object Mode', 'Pose', 'Weight Paint']: + for key in qcd_hotkeys: 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] @@ -149,34 +149,34 @@ def register_qcd_view_hotkeys(): 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.enable_all_qcd_slots', 'PLUS', 'PRESS', shift=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.enable_all_qcd_slots', 'PLUS', 'PRESS', shift=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.isolate_selected_objects_collections', 'EQUAL', 'PRESS') - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.isolate_selected_objects_collections', 'EQUAL', 'PRESS') + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.disable_selected_objects_collections', 'MINUS', 'PRESS') - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.disable_selected_objects_collections', 'MINUS', 'PRESS') + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.disable_all_non_qcd_slots', 'PLUS', 'PRESS', shift=True, alt=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.disable_all_non_qcd_slots', 'PLUS', 'PRESS', shift=True, alt=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.disable_all_collections', 'EQUAL', 'PRESS', alt=True, ctrl=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.disable_all_collections', 'EQUAL', 'PRESS', alt=True, ctrl=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.select_all_qcd_objects', 'PLUS', 'PRESS', shift=True, ctrl=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.select_all_qcd_objects', 'PLUS', 'PRESS', shift=True, ctrl=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.discard_qcd_history', 'EQUAL', 'PRESS', alt=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.discard_qcd_history', 'EQUAL', 'PRESS', alt=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) def register_qcd_view_edit_mode_hotkeys(): -- cgit v1.2.3 From af8d747d00ac10b2196bf81295ce5f730be9af6a Mon Sep 17 00:00:00 2001 From: Ryan Inch Date: Fri, 12 Aug 2022 04:49:35 -0400 Subject: Collection Manager: Fix T100326. Task: T69577 Add guards to the functions triggered by checkbox updates in the preferences. This prevents them from being called multiple times, such as when the mouse is hovered over the checkbox and the backspace key is repeatedly pressed. --- object_collection_manager/qcd_init.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'object_collection_manager/qcd_init.py') diff --git a/object_collection_manager/qcd_init.py b/object_collection_manager/qcd_init.py index c2d555f5..6d4ac7e7 100644 --- a/object_collection_manager/qcd_init.py +++ b/object_collection_manager/qcd_init.py @@ -27,6 +27,7 @@ from bpy.app.handlers import persistent addon_qcd_keymaps = [] addon_qcd_view_hotkey_keymaps = [] addon_qcd_view_edit_mode_hotkey_keymaps = [] +qcd_registered = False qcd_classes = ( @@ -76,6 +77,11 @@ def load_pre_handler(dummy): def register_qcd(): + global qcd_registered + if qcd_registered: + # guard to handle default value updates (mouse hover + backspace) + return + for cls in qcd_classes: bpy.utils.register_class(cls) @@ -107,8 +113,14 @@ def register_qcd(): if prefs.enable_qcd_3dview_header_widget: register_qcd_3dview_header_widget() + qcd_registered = True + def register_qcd_view_hotkeys(): + if addon_qcd_view_hotkey_keymaps: + # guard to handle default value updates (mouse hover + backspace) + return + wm = bpy.context.window_manager if wm.keyconfigs.addon: # not present when started with --background # create qcd hotkeys @@ -180,6 +192,10 @@ def register_qcd_view_hotkeys(): def register_qcd_view_edit_mode_hotkeys(): + if addon_qcd_view_edit_mode_hotkey_keymaps: + # guard to handle default value updates (mouse hover + backspace) + return + wm = bpy.context.window_manager if wm.keyconfigs.addon: # not present when started with --background # create qcd hotkeys @@ -248,12 +264,22 @@ def register_qcd_view_edit_mode_hotkeys(): def register_qcd_3dview_header_widget(): + # unregister first to guard against default value updates (mouse hover + backspace) + # if the widget isn't registered it will just do nothing + unregister_qcd_3dview_header_widget() + + # add the widget to the header, and an update function to the top bar to get view layer changes bpy.types.VIEW3D_HT_header.append(ui.view3d_header_qcd_slots) bpy.types.TOPBAR_HT_upper_bar.append(ui.view_layer_update) def unregister_qcd(): + global qcd_registered + if not qcd_registered: + # guard to handle default value updates (mouse hover + backspace) + return + unregister_qcd_3dview_header_widget() for cls in qcd_classes: @@ -279,6 +305,8 @@ def unregister_qcd(): unregister_qcd_view_edit_mode_hotkeys() + qcd_registered = False + def unregister_qcd_view_hotkeys(): # remove keymaps when qcd view hotkeys are deactivated -- cgit v1.2.3