work: update FA maya config pro
This commit is contained in:
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"last_check": "2026-05-27 14:41:11.263249",
|
||||
"last_check": "2026-06-15 10:23:39.203210",
|
||||
"backup_date": "May-27-2026",
|
||||
"update_ready": false,
|
||||
"ignore": false,
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -2,6 +2,11 @@
|
||||
|
||||
All notable changes to **Maya Config Pro** are listed here. Versions match `blender_manifest.toml`.
|
||||
|
||||
## [1.8.1] — 2026-06-16
|
||||
|
||||
### Fixed
|
||||
- **Node Editor:** Alt+RMB drag works for **Node Wrangler Lazy Connect** again (FA Hotkeys + Blender default). Disabled conflicting `node.backimage_sample` and `node.move_detach_links_release` bindings; runtime patch applies on preset switch and add-on load.
|
||||
|
||||
## [1.8.0] — 2026-04-22
|
||||
|
||||
### WIP — Animation shelf (3D View)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Maya Config Pro - Blender Extension
|
||||
A Maya-like configuration, shortcuts, and UI elements for Blender.
|
||||
|
||||
Version: 1.8.0
|
||||
Version: 1.8.1
|
||||
Author: Form Affinity (Jesse Doyle)
|
||||
"""
|
||||
|
||||
@@ -12,7 +12,7 @@ Author: Form Affinity (Jesse Doyle)
|
||||
bl_info = {
|
||||
"name": "Maya Config Pro",
|
||||
"author": "Form Affinity (Jesse Doyle)",
|
||||
"version": (1, 8, 0),
|
||||
"version": (1, 8, 1),
|
||||
"blender": (4, 2, 0),
|
||||
"location": "View3D > Sidebar > Maya Config",
|
||||
"description": "Maya-like configuration, shortcuts, UI panels, and keymap presets",
|
||||
@@ -50,6 +50,7 @@ from .ops import (
|
||||
|
||||
from .keyconfigs import fa_hotkeys
|
||||
from .utils import deploy as deploy_util
|
||||
from .utils import keymap_fix
|
||||
from .ops import deploy_ops
|
||||
|
||||
|
||||
@@ -190,6 +191,11 @@ def register():
|
||||
except Exception as e:
|
||||
print(f"Warning: Failed to sync keymaps: {e}")
|
||||
|
||||
try:
|
||||
keymap_fix.patch_active_keyconfig()
|
||||
except Exception as e:
|
||||
print(f"Warning: Maya Config Pro: node editor keymap patch: {e}")
|
||||
|
||||
|
||||
def unregister():
|
||||
"""Unregister all classes and submodules"""
|
||||
|
||||
@@ -3,7 +3,7 @@ schema_version = "1.0.0"
|
||||
id = "form_affinity_maya_config_pro"
|
||||
name = "Maya Config Pro"
|
||||
tagline = "Maya-like configuration, shortcuts, and UI elements for Blender"
|
||||
version = "1.8.0"
|
||||
version = "1.8.1"
|
||||
type = "add-on"
|
||||
|
||||
maintainer = "Form Affinity"
|
||||
|
||||
@@ -10,6 +10,7 @@ that layer without restarting.
|
||||
|
||||
import bpy
|
||||
from ..utils import compat
|
||||
from ..utils import keymap_fix
|
||||
|
||||
# Import the keyconfig data
|
||||
from . import fa_hotkeys_data
|
||||
@@ -138,6 +139,10 @@ def sync_addon_keymaps() -> None:
|
||||
if is_fa_keyconfig_active():
|
||||
unregister_keymaps()
|
||||
register_keymaps()
|
||||
try:
|
||||
keymap_fix.patch_node_editor_alt_rmb("FA_HOTKEYS")
|
||||
except Exception:
|
||||
pass
|
||||
else:
|
||||
unregister_keymaps()
|
||||
|
||||
|
||||
@@ -2555,7 +2555,10 @@ keyconfig_data = \
|
||||
},
|
||||
),
|
||||
("node.backimage_fit", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
|
||||
("node.backimage_sample", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, None),
|
||||
("node.backimage_sample", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True},
|
||||
{"active":False,
|
||||
},
|
||||
),
|
||||
("node.link_make",
|
||||
{"type": 'J', "value": 'PRESS'},
|
||||
{"properties":
|
||||
@@ -2768,6 +2771,7 @@ keyconfig_data = \
|
||||
],
|
||||
),
|
||||
],
|
||||
"active":False,
|
||||
},
|
||||
),
|
||||
("node.move_detach_links",
|
||||
|
||||
@@ -7,6 +7,7 @@ import os
|
||||
import bpy
|
||||
|
||||
from ..keyconfigs import fa_hotkeys
|
||||
from ..utils import keymap_fix
|
||||
from ..utils import compat
|
||||
from ..utils import deploy as deploy_util
|
||||
|
||||
@@ -27,6 +28,10 @@ class MCP_OT_DeployKeymapPresets(bpy.types.Operator):
|
||||
fa_hotkeys.sync_addon_keymaps()
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
keymap_fix.patch_active_keyconfig()
|
||||
except Exception:
|
||||
pass
|
||||
else:
|
||||
self.report({"ERROR"}, msg)
|
||||
return {"FINISHED"} if ok else {"CANCELLED"}
|
||||
@@ -109,6 +114,11 @@ class MCP_OT_ActivateKeymapPreset(bpy.types.Operator):
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
keymap_fix.patch_node_editor_alt_rmb(self.preset)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
|
||||
+5
-1
@@ -2555,7 +2555,10 @@ keyconfig_data = \
|
||||
},
|
||||
),
|
||||
("node.backimage_fit", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
|
||||
("node.backimage_sample", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, None),
|
||||
("node.backimage_sample", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True},
|
||||
{"active":False,
|
||||
},
|
||||
),
|
||||
("node.link_make",
|
||||
{"type": 'J', "value": 'PRESS'},
|
||||
{"properties":
|
||||
@@ -2768,6 +2771,7 @@ keyconfig_data = \
|
||||
],
|
||||
),
|
||||
],
|
||||
"active":False,
|
||||
},
|
||||
),
|
||||
("node.move_detach_links",
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
"""
|
||||
Runtime fixes for Alt+RMB in node editor areas.
|
||||
|
||||
Node Wrangler Lazy Connect (node.nw_lazy_connect) uses Alt+RMB press/drag.
|
||||
Native node.backimage_sample and node.move_detach_links_release block it.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import bpy
|
||||
|
||||
|
||||
def _find_keymap(kc, name: str, space_type: str):
|
||||
try:
|
||||
return kc.keymaps.find(name, space_type=space_type, region_type="WINDOW")
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
def _set_kmi_active(km, *, idname: str, value: str, active: bool) -> None:
|
||||
if not km:
|
||||
return
|
||||
for kmi in km.keymap_items:
|
||||
if (
|
||||
kmi.idname == idname
|
||||
and kmi.type == "RIGHTMOUSE"
|
||||
and kmi.value == value
|
||||
and kmi.alt
|
||||
and not kmi.shift
|
||||
and not kmi.ctrl
|
||||
):
|
||||
kmi.active = active
|
||||
|
||||
|
||||
def _lazy_connect_available() -> bool:
|
||||
return "node_wrangler" in bpy.context.preferences.addons
|
||||
|
||||
|
||||
def _ensure_lazy_connect(km) -> None:
|
||||
if not km or not _lazy_connect_available():
|
||||
return
|
||||
for kmi in km.keymap_items:
|
||||
if (
|
||||
kmi.idname == "node.nw_lazy_connect"
|
||||
and kmi.type == "RIGHTMOUSE"
|
||||
and kmi.value == "PRESS"
|
||||
and kmi.alt
|
||||
and not kmi.shift
|
||||
and not kmi.ctrl
|
||||
and not getattr(kmi.properties, "with_menu", True)
|
||||
):
|
||||
kmi.active = True
|
||||
return
|
||||
kmi = km.keymap_items.new(
|
||||
"node.nw_lazy_connect",
|
||||
"RIGHTMOUSE",
|
||||
"PRESS",
|
||||
alt=True,
|
||||
head=True,
|
||||
)
|
||||
kmi.properties.with_menu = False
|
||||
|
||||
|
||||
def active_preset_name() -> str | None:
|
||||
try:
|
||||
stem = str(bpy.context.preferences.keymap.active_keyconfig or "").lower()
|
||||
except Exception:
|
||||
stem = ""
|
||||
if stem == "fa_hotkeys":
|
||||
return "FA_HOTKEYS"
|
||||
if stem in {"industry_compatible", "industry compatible"}:
|
||||
return "INDUSTRY"
|
||||
if stem == "blender":
|
||||
return "BLENDER"
|
||||
return None
|
||||
|
||||
|
||||
def patch_active_keyconfig() -> None:
|
||||
preset = active_preset_name()
|
||||
if preset:
|
||||
patch_node_editor_alt_rmb(preset)
|
||||
|
||||
|
||||
def _patch_keyconfig(kc) -> None:
|
||||
if not kc:
|
||||
return
|
||||
km_node = _find_keymap(kc, "Node Editor", "NODE_EDITOR")
|
||||
_set_kmi_active(km_node, idname="node.backimage_sample", value="PRESS", active=False)
|
||||
_set_kmi_active(
|
||||
km_node,
|
||||
idname="node.move_detach_links_release",
|
||||
value="CLICK_DRAG",
|
||||
active=False,
|
||||
)
|
||||
_ensure_lazy_connect(km_node)
|
||||
|
||||
|
||||
def patch_node_editor_alt_rmb(preset: str) -> None:
|
||||
"""Free Alt+RMB for Node Wrangler Lazy Connect in node editors."""
|
||||
wm = getattr(bpy.context, "window_manager", None)
|
||||
if not wm:
|
||||
return
|
||||
_patch_keyconfig(wm.keyconfigs.active)
|
||||
_patch_keyconfig(wm.keyconfigs.addon)
|
||||
Reference in New Issue
Block a user