Skip to content
Snippets Groups Projects
Commit af8d747d authored by Ryan Inch's avatar Ryan Inch
Browse files

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.
parent 715015fd
No related branches found
No related tags found
No related merge requests found
...@@ -6,7 +6,7 @@ bl_info = { ...@@ -6,7 +6,7 @@ bl_info = {
"name": "Collection Manager", "name": "Collection Manager",
"description": "Manage collections and their objects", "description": "Manage collections and their objects",
"author": "Ryan Inch", "author": "Ryan Inch",
"version": (2, 24, 2), "version": (2, 24, 3),
"blender": (2, 80, 0), "blender": (2, 80, 0),
"location": "View3D - Object Mode (Shortcut - M)", "location": "View3D - Object Mode (Shortcut - M)",
"warning": '', # used for warning icon and text in addons panel "warning": '', # used for warning icon and text in addons panel
......
...@@ -144,6 +144,10 @@ def disable_objects_menu_addition(self, context): ...@@ -144,6 +144,10 @@ def disable_objects_menu_addition(self, context):
def register_disable_objects_hotkeys(): 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 wm = bpy.context.window_manager
if wm.keyconfigs.addon: # not present when started with --background if wm.keyconfigs.addon: # not present when started with --background
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode') km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
......
...@@ -27,6 +27,7 @@ from bpy.app.handlers import persistent ...@@ -27,6 +27,7 @@ from bpy.app.handlers import persistent
addon_qcd_keymaps = [] addon_qcd_keymaps = []
addon_qcd_view_hotkey_keymaps = [] addon_qcd_view_hotkey_keymaps = []
addon_qcd_view_edit_mode_hotkey_keymaps = [] addon_qcd_view_edit_mode_hotkey_keymaps = []
qcd_registered = False
qcd_classes = ( qcd_classes = (
...@@ -76,6 +77,11 @@ def load_pre_handler(dummy): ...@@ -76,6 +77,11 @@ def load_pre_handler(dummy):
def register_qcd(): def register_qcd():
global qcd_registered
if qcd_registered:
# guard to handle default value updates (mouse hover + backspace)
return
for cls in qcd_classes: for cls in qcd_classes:
bpy.utils.register_class(cls) bpy.utils.register_class(cls)
...@@ -107,8 +113,14 @@ def register_qcd(): ...@@ -107,8 +113,14 @@ def register_qcd():
if prefs.enable_qcd_3dview_header_widget: if prefs.enable_qcd_3dview_header_widget:
register_qcd_3dview_header_widget() register_qcd_3dview_header_widget()
qcd_registered = True
def register_qcd_view_hotkeys(): 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 wm = bpy.context.window_manager
if wm.keyconfigs.addon: # not present when started with --background if wm.keyconfigs.addon: # not present when started with --background
# create qcd hotkeys # create qcd hotkeys
...@@ -180,6 +192,10 @@ def register_qcd_view_hotkeys(): ...@@ -180,6 +192,10 @@ def register_qcd_view_hotkeys():
def register_qcd_view_edit_mode_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 wm = bpy.context.window_manager
if wm.keyconfigs.addon: # not present when started with --background if wm.keyconfigs.addon: # not present when started with --background
# create qcd hotkeys # create qcd hotkeys
...@@ -248,12 +264,22 @@ def register_qcd_view_edit_mode_hotkeys(): ...@@ -248,12 +264,22 @@ def register_qcd_view_edit_mode_hotkeys():
def register_qcd_3dview_header_widget(): 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.VIEW3D_HT_header.append(ui.view3d_header_qcd_slots)
bpy.types.TOPBAR_HT_upper_bar.append(ui.view_layer_update) bpy.types.TOPBAR_HT_upper_bar.append(ui.view_layer_update)
def unregister_qcd(): 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() unregister_qcd_3dview_header_widget()
for cls in qcd_classes: for cls in qcd_classes:
...@@ -279,6 +305,8 @@ def unregister_qcd(): ...@@ -279,6 +305,8 @@ def unregister_qcd():
unregister_qcd_view_edit_mode_hotkeys() unregister_qcd_view_edit_mode_hotkeys()
qcd_registered = False
def unregister_qcd_view_hotkeys(): def unregister_qcd_view_hotkeys():
# remove keymaps when qcd view hotkeys are deactivated # remove keymaps when qcd view hotkeys are deactivated
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment