fix(windows): also remove WS_EX_LAYERED in fullscreen mode

Testing revealed that removing WS_EX_TRANSPARENT alone is not sufficient
to fix click-through behavior. WS_EX_LAYERED must also be removed for
mouse events to be captured in fullscreen mode.

The unfullscreen() function already restores w.previousWindowExStyle,
so both flags will be properly restored when exiting fullscreen.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Lea Anthony 2026-01-25 12:15:03 +11:00
commit 8a658a80c0

View file

@ -843,13 +843,13 @@ func (w *windowsWebviewWindow) fullscreen() {
w32.GWL_STYLE,
w.previousWindowStyle & ^uint32(w32.WS_OVERLAPPEDWINDOW) | (w32.WS_POPUP|w32.WS_VISIBLE),
)
// Remove WS_EX_TRANSPARENT to ensure mouse events are captured in fullscreen mode.
// This fixes click-through issues when Frameless + BackgroundTypeTransparent are used.
// Remove WS_EX_TRANSPARENT and WS_EX_LAYERED to ensure mouse events are captured in fullscreen mode.
// Both flags must be removed to fix click-through issues when Frameless + BackgroundTypeTransparent are used.
// See: https://github.com/wailsapp/wails/issues/4408
w32.SetWindowLong(
w.hwnd,
w32.GWL_EXSTYLE,
w.previousWindowExStyle & ^uint32(w32.WS_EX_DLGMODALFRAME|w32.WS_EX_TRANSPARENT),
w.previousWindowExStyle & ^uint32(w32.WS_EX_DLGMODALFRAME|w32.WS_EX_TRANSPARENT|w32.WS_EX_LAYERED),
)
w.isCurrentlyFullscreen = true
w32.SetWindowPos(w.hwnd, w32.HWND_TOP,