mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 08:07:49 +00:00
fix(windows): de-parent settings window on Windows so DWM paints its shadow
An owned child (WS_POPUP) of a borderless parent gets no DWM shadow, leaving the frameless settings window flat against its project window. Ownership is already tracked by the settings-<parent> label (parent-close cleanup in on_window_event, menu modality), so make the settings window top-level on Windows; macOS and Linux keep the native parent link.
This commit is contained in:
@@ -796,9 +796,13 @@ pub fn open_settings_window(
|
||||
#[cfg(target_os = "linux")]
|
||||
crate::linux_window_state::prepare(app, &mut config);
|
||||
let builder = WebviewWindowBuilder::from_config(app, &config);
|
||||
// AppKit child windows can disappear when dragged to another display's Space.
|
||||
// The settings label already tracks ownership and parent-close cleanup.
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
// Windows: an owned child (WS_POPUP) of a borderless parent gets no DWM
|
||||
// shadow, leaving the frameless settings window flat against its parent.
|
||||
// Ownership is tracked by the `settings-<parent>` label instead
|
||||
// (parent-close cleanup, menu modality), so only Linux keeps the native
|
||||
// parent link. AppKit child windows can disappear when dragged to another
|
||||
// display's Space, so macOS keeps it too.
|
||||
#[cfg(target_os = "linux")]
|
||||
let builder = builder.and_then(|b| b.parent(&parent));
|
||||
let window = builder
|
||||
.and_then(|b| dev_font_preferences(b).build())
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/**
|
||||
* Settings window ↔ its project window.
|
||||
*
|
||||
* Settings live in a native child window `settings-<parent>` (see
|
||||
* src-tauri/src/windows.rs) that only runs the settings pages. The action
|
||||
* Settings live in a separate window `settings-<parent>` (see
|
||||
* src-tauri/src/windows.rs) that only runs the settings pages (a native
|
||||
* child of the parent on macOS/Linux; top-level on Windows so DWM paints
|
||||
* its shadow). The action
|
||||
* registry stays in the project window: it sends the settings window a
|
||||
* description of every action (Keymap page, links that run actions) and runs
|
||||
* the actions the settings window forwards.
|
||||
|
||||
Reference in New Issue
Block a user