mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
1.9 KiB
1.9 KiB
Main Window Desktop Layer Design
Window Roles
Lan Mountain Desktop now has three separate window-layer roles:
MainDesktopWindow: the normal desktop host window. WithEnableMainWindowDesktopLayer, this window is moved to the desktop layer so it does not cover ordinary apps.FusedDesktopSurface: fused desktop component windows such asDesktopWidgetWindowandTransparentOverlayWindow. These continue to useIWindowBottomMostServiceand their existing click-through region service.AirApp: independent Air APP windows. These are ordinary app windows and do not use desktop-layer services or globalTopmostpromotion.
Service Boundary
IMainWindowDesktopLayerService is dedicated to the main window only. It does not reuse fused desktop passthrough services because the main window must stay interactive.
Windows behavior:
- Save original parent, style, and extended style before enabling.
- Try to attach the main window to the desktop icon host.
- If that host is not found, use
HWND_BOTTOM. - On disable, restore the saved parent and styles as best effort.
Non-Windows behavior:
- Keep a null implementation.
- Log that the platform is unsupported.
Settings Flow
The developer settings page owns confirmation UX for conflicts:
- Fused desktop toggle and main-window desktop-layer toggle are one-way bound.
- Toggle click handlers ask for confirmation before saving conflicting states.
- The view model writes both keys together so runtime listeners receive a coherent change set.
Runtime Flow
Main-window restore paths call ActivateOrRefreshMainWindowLayer.
- If
EnableMainWindowDesktopLayeris enabled, the app refreshes the desktop-layer attachment and hides the taskbar entry. - If disabled, the app restores ordinary activation behavior, including the existing temporary foreground promotion.
Settings changes call both fused desktop and main-window desktop-layer runtime application paths so switching modes is immediate.