Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Inch <mythologylover75@gmail.com>2022-08-12 11:49:35 +0300
committerRyan Inch <mythologylover75@gmail.com>2022-08-12 11:49:35 +0300
commitaf8d747d00ac10b2196bf81295ce5f730be9af6a (patch)
treea40e9889fe18fb37a88872bafa0cd1148dc81121
parent715015fd658e203d8344ac252a2730150f4606aa (diff)
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.
-rw-r--r--object_collection_manager/__init__.py2
-rw-r--r--object_collection_manager/cm_init.py4
-rw-r--r--object_collection_manager/qcd_init.py28
3 files changed, 33 insertions, 1 deletions
diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py
index 1c0c7267..fd2bd44b 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 38080cb8..679d8d3e 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 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