diff --git a/packages/wm-platform/src/native_window.rs b/packages/wm-platform/src/native_window.rs index e2fdb0a2..793b107c 100644 --- a/packages/wm-platform/src/native_window.rs +++ b/packages/wm-platform/src/native_window.rs @@ -33,7 +33,8 @@ use windows::{ SW_MINIMIZE, SW_RESTORE, SW_SHOWNA, WINDOWPLACEMENT, WINDOW_EX_STYLE, WINDOW_STYLE, WM_CLOSE, WPF_ASYNCWINDOWPLACEMENT, WS_CAPTION, WS_CHILD, WS_DLGFRAME, WS_EX_LAYERED, - WS_EX_NOACTIVATE, WS_EX_TOOLWINDOW, WS_MAXIMIZEBOX, WS_THICKFRAME, + WS_EX_NOACTIVATE, WS_EX_TOOLWINDOW, WS_MAXIMIZEBOX, WS_POPUP, + WS_THICKFRAME, }, }, }, @@ -284,6 +285,12 @@ impl NativeWindow { self.has_window_style(WS_THICKFRAME) } + /// Whether the window is meant to be a popup window. + #[must_use] + pub fn is_popup(&self) -> bool { + self.has_window_style(WS_POPUP) + } + /// Whether the window is fullscreen. /// /// Returns `false` if the window is maximized. diff --git a/packages/wm/src/commands/window/manage_window.rs b/packages/wm/src/commands/window/manage_window.rs index d3b7e8c6..fcead4d1 100644 --- a/packages/wm/src/commands/window/manage_window.rs +++ b/packages/wm/src/commands/window/manage_window.rs @@ -213,8 +213,8 @@ fn window_state_to_create( )); } - // Initialize windows that can't be resized as floating. - if !native_window.is_resizable() { + // Initialize non-resizable windows and popups as floating. + if !native_window.is_resizable() || native_window.is_popup() { return Ok(WindowState::Floating( config.value.window_behavior.state_defaults.floating.clone(), ));