diff --git a/packages/wm/src/common/events/handle_window_focused.rs b/packages/wm/src/common/events/handle_window_focused.rs
index e684161a7..57e7bf0f7 100644
--- a/packages/wm/src/common/events/handle_window_focused.rs
+++ b/packages/wm/src/common/events/handle_window_focused.rs
@@ -9,7 +9,6 @@ use crate::{
containers::{commands::set_focused_descendant, traits::CommonGetters},
user_config::{UserConfig, WindowRuleEvent},
windows::{commands::run_window_rules, traits::WindowGetters},
- wm_event::WmEvent,
wm_state::WmState,
workspaces::{commands::focus_workspace, WorkspaceTarget},
};
diff --git a/packages/wm/src/common/platform/native_window.rs b/packages/wm/src/common/platform/native_window.rs
index 6b29c9a13..04d196111 100644
--- a/packages/wm/src/common/platform/native_window.rs
+++ b/packages/wm/src/common/platform/native_window.rs
@@ -15,10 +15,7 @@ use windows::{
PROCESS_QUERY_LIMITED_INFORMATION,
},
UI::{
- Input::KeyboardAndMouse::{
- SendInput, INPUT, INPUT_0, INPUT_KEYBOARD, KEYBDINPUT,
- KEYBD_EVENT_FLAGS, VIRTUAL_KEY,
- },
+ Input::KeyboardAndMouse::{SendInput, INPUT, INPUT_MOUSE},
WindowsAndMessaging::{
EnumWindows, GetClassNameW, GetWindow, GetWindowLongPtrW,
GetWindowRect, GetWindowTextW, GetWindowThreadProcessId, IsIconic,
@@ -284,23 +281,14 @@ impl NativeWindow {
}
pub fn set_foreground(&self) -> anyhow::Result<()> {
- let input = INPUT {
- r#type: INPUT_KEYBOARD,
- Anonymous: INPUT_0 {
- ki: KEYBDINPUT {
- wVk: VIRTUAL_KEY(1),
- wScan: 0,
- dwFlags: KEYBD_EVENT_FLAGS(0),
- time: 0,
- dwExtraInfo: 0,
- },
- },
- };
-
- // Simulate a key press event to activate the window. VK code 1 is a
- // left mouse button press and caused the least side effects versus
- // other key codes.
- unsafe { SendInput(&[input], std::mem::size_of::() as i32) };
+ let input = [INPUT {
+ r#type: INPUT_MOUSE,
+ ..Default::default()
+ }];
+
+ // Bypass restriction for setting the foreground window by sending an
+ // input to our own process first.
+ unsafe { SendInput(&input, std::mem::size_of::() as i32) };
// Set as the foreground window.
unsafe { SetForegroundWindow(HWND(self.handle)) }.ok()?;