[Bf-extensions-cvs] [af8d747d] blender-v3.3-release: Collection Manager: Fix T100326. Task: T69577

Ryan Inch noreply at git.blender.org
Fri Aug 12 10:50:18 CEST 2022


Commit: af8d747d00ac10b2196bf81295ce5f730be9af6a
Author: Ryan Inch
Date:   Fri Aug 12 04:49:35 2022 -0400
Branches: blender-v3.3-release
https://developer.blender.org/rBAaf8d747d00ac10b2196bf81295ce5f730be9af6a

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.

===================================================================

M	object_collection_manager/__init__.py
M	object_collection_manager/cm_init.py
M	object_collection_manager/qcd_init.py

===================================================================

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



More information about the Bf-extensions-cvs mailing list