diff --git a/src/platform.rs b/src/platform.rs index 7bc606d..8843ced 100644 --- a/src/platform.rs +++ b/src/platform.rs @@ -151,6 +151,15 @@ mod windows { // Make sure the window is visible ShowWindow(hwnd, SW_SHOW); + // Always ensure the window is topmost before updating + // This ensures our cursor stays above all other windows including system menus + SetWindowPos( + hwnd, + HWND_TOPMOST, + 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE + ); + // Update the layered window atomically // Convert references to raw pointers for UpdateLayeredWindow let result = UpdateLayeredWindow( @@ -834,6 +843,18 @@ del "%~f0" return; } + // Ensure the cursor window is always topmost, even if no movement occurred + if let Some(hwnd) = CURSOR_WINDOW { + // Always ensure the window is topmost, even if the cursor hasn't moved + // This helps ensure our cursor stays above system menus and other topmost windows + SetWindowPos( + hwnd, + HWND_TOPMOST, + 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE + ); + } + // Update the cursor position using our new function update_cursor_position(&point); }