From 864cc10b2489dd6af6557e0b3fbdf22d7fc7ee62 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sun, 6 Oct 2024 17:34:59 +1100 Subject: [PATCH] Fix #5529. Escape now switches back from item mode to object mode. --- src/bonsai/bonsai/bim/handler.py | 2 ++ .../bonsai/bim/module/geometry/__init__.py | 2 ++ .../bonsai/bim/module/geometry/operator.py | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/src/bonsai/bonsai/bim/handler.py b/src/bonsai/bonsai/bim/handler.py index feeff780dc..a13468a8fa 100644 --- a/src/bonsai/bonsai/bim/handler.py +++ b/src/bonsai/bonsai/bim/handler.py @@ -296,6 +296,8 @@ def load_post(scene): else: bpy.ops.workspace.append_activate(idname="BIM", filepath=os.path.join(cwd, "data", "workspace.blend")) + bpy.ops.bim.override_escape("INVOKE_DEFAULT") + # To improve usability for new users, we hijack the scene properties # tab. We override default scene properties panels with our own poll # to hide them unless the user has chosen to view Blender properties. diff --git a/src/bonsai/bonsai/bim/module/geometry/__init__.py b/src/bonsai/bonsai/bim/module/geometry/__init__.py index a79476d967..955ec2b8ee 100644 --- a/src/bonsai/bonsai/bim/module/geometry/__init__.py +++ b/src/bonsai/bonsai/bim/module/geometry/__init__.py @@ -44,6 +44,7 @@ classes = ( operator.OverrideDuplicateMoveLinked, operator.OverrideDuplicateMoveLinkedMacro, operator.OverrideDuplicateMoveMacro, + operator.OverrideEscape, operator.OverrideJoin, operator.OverrideMeshSeparate, operator.OverrideModeSetEdit, @@ -100,6 +101,7 @@ def register(): bpy.types.VIEW3D_MT_object_context_menu.append(ui.object_menu) bpy.types.VIEW3D_MT_edit_mesh.append(ui.edit_mesh_menu) bpy.types.VIEW3D_HT_header.append(ui.mode_menu) + wm = bpy.context.window_manager if wm.keyconfigs.addon: km = wm.keyconfigs.addon.keymaps.new(name="Object Mode", space_type="EMPTY") diff --git a/src/bonsai/bonsai/bim/module/geometry/operator.py b/src/bonsai/bonsai/bim/module/geometry/operator.py index 4860eac6e1..1069e445b2 100644 --- a/src/bonsai/bonsai/bim/module/geometry/operator.py +++ b/src/bonsai/bonsai/bim/module/geometry/operator.py @@ -1711,6 +1711,24 @@ class OverridePasteBuffer(bpy.types.Operator): return {"FINISHED"} +class OverrideEscape(bpy.types.Operator): + bl_idname = "bim.override_escape" + bl_label = "Override Escape" + + def execute(self, context): + self.report({"INFO"}, "Operator executed") + return {"FINISHED"} + + def modal(self, context, event): + if event.type == "ESC" and context.scene.BIMGeometryProperties.mode == "ITEM": + tool.Geometry.disable_item_mode() + return {"PASS_THROUGH"} + + def invoke(self, context, event): + context.window_manager.modal_handler_add(self) + return {"RUNNING_MODAL"} + + class OverrideModeSetEdit(bpy.types.Operator, tool.Ifc.Operator): bl_description = "Switch from Object to Item to Edit mode" bl_idname = "bim.override_mode_set_edit"