diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 97736831..325a41ee 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -8,7 +8,8 @@ }, "enabledMcpjsonServers": [ "registry", - "jupyter" + "jupyter", + "orchestrator" ], "hooks": { "PreToolUse": [ @@ -65,4 +66,4 @@ } ] } -} \ No newline at end of file +} diff --git a/cpp/framework/app_base.cpp b/cpp/framework/app_base.cpp index 4a33dcfe..0e46f932 100644 --- a/cpp/framework/app_base.cpp +++ b/cpp/framework/app_base.cpp @@ -114,6 +114,24 @@ static LRESULT CALLBACK fn_subclass_wndproc(HWND hwnd, UINT msg, WPARAM wp, LPAR case WM_EXITSIZEMOVE: g_in_sizemove.store(false, std::memory_order_release); break; + case WM_SYSKEYDOWN: + // Alt+Enter would otherwise toggle a borderless-fullscreen mode + // (driven by some GPU drivers' OpenGL/Vulkan hotkey, or by + // DefWindowProc on certain window styles). We never want that: + // these are docked tool windows, not games. Consume the keystroke + // so the window stays in its normal decorated state. Every other + // Alt+key combo chains through to GLFW/DefWindowProc untouched. + if (wp == VK_RETURN) { + return 0; + } + break; + case WM_SYSCHAR: + // Swallow the system "ding" beep that the suppressed Alt+Enter + // above would otherwise trigger via the default char handler. + if (wp == VK_RETURN) { + return 0; + } + break; case WM_LBUTTONDOWN: // Alt + LMB anywhere on the window initiates a native modal MOVE // via WM_SYSCOMMAND, SC_MOVE | HTCAPTION. Same pattern as our