Fix cursor z-order issue by continuously refreshing HWND_TOPMOST status
This commit is contained in:
@@ -151,6 +151,15 @@ mod windows {
|
|||||||
// Make sure the window is visible
|
// Make sure the window is visible
|
||||||
ShowWindow(hwnd, SW_SHOW);
|
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
|
// Update the layered window atomically
|
||||||
// Convert references to raw pointers for UpdateLayeredWindow
|
// Convert references to raw pointers for UpdateLayeredWindow
|
||||||
let result = UpdateLayeredWindow(
|
let result = UpdateLayeredWindow(
|
||||||
@@ -834,6 +843,18 @@ del "%~f0"
|
|||||||
return;
|
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 the cursor position using our new function
|
||||||
update_cursor_position(&point);
|
update_cursor_position(&point);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user