diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py index 1c0c7267d2425d8f00373a71810dcf7a1c329aa8..fd2bd44b5acfbedd19ecc090201d00ef3afb04f7 100644 --- a/object_collection_manager/__init__.py +++ b/object_collection_manager/__init__.py @@ -6,7 +6,7 @@ bl_info = { "name": "Collection Manager", "description": "Manage collections and their objects", "author": "Ryan Inch", - "version": (2, 24, 2), + "version": (2, 24, 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/cm_init.py b/object_collection_manager/cm_init.py index 38080cb883d606562c11414c18f72cbc52167b3a..679d8d3e2e58c8ec651c9af74e088b283ddbe1f0 100644 --- a/object_collection_manager/cm_init.py +++ b/object_collection_manager/cm_init.py @@ -144,6 +144,10 @@ def disable_objects_menu_addition(self, context): def register_disable_objects_hotkeys(): + if addon_disable_objects_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 km = wm.keyconfigs.addon.keymaps.new(name='Object Mode') diff --git a/object_collection_manager/qcd_init.py b/object_collection_manager/qcd_init.py index c2d555f5ee6b3a221b0243f28a1b1b614835e114..6d4ac7e7cff2d83b893b7f4e2a69c56497f77340 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