Skip to content

fix: seamless fullscreen transition for custom and native window decorations - #15

Open
SubmitCodes wants to merge 2 commits into
aervxa:fix/fullscreen-taurifrom
SubmitCodes:fix/fullscreen-tauri
Open

fix: seamless fullscreen transition for custom and native window decorations#15
SubmitCodes wants to merge 2 commits into
aervxa:fix/fullscreen-taurifrom
SubmitCodes:fix/fullscreen-tauri

Conversation

@SubmitCodes

@SubmitCodes SubmitCodes commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Fixes #5

Summary

Fixes the fullscreen transition issues on Windows when toggling fullscreen from a maximized state with custom (frameless) window decorations.

Problem

  • Taskbar clipping: When running with custom decorations (decorations: false), toggling fullscreen while the window was maximized caused the window bounds to be clamped to the Windows work area, leaving a gap/bar over the taskbar at the bottom.
  • Window jump / stutter: Calling DOM requestFullscreen() or chaining unmaximize() -> setFullscreen(true) in JavaScript sent back-to-back resize events and triggered Windows DWM restore animations, causing the window to visibly jump, shrink, and drop frames.

Changes

  • Native Backend Fullscreen Commands: Implemented set_fullscreen, toggle_fullscreen, and is_fullscreen commands in Tauri Rust backend (commands.rs).
  • Direct 1-Step Expansion (Windows): When entering fullscreen from maximized with custom decorations, clears WS_MAXIMIZE in memory and resizes directly to full monitor bounds in one single frame via SetWindowPos, eliminating double-resizes and DWM warping.
  • Maximized State Restoration: Seamlessly restores the maximized window state upon exiting fullscreen if the window was previously maximized.
  • Native Decorations Isolation: Preserves 100% native OS window animations when nativeDecorations is enabled by bypassing custom logic and calling native fullscreen directly.
  • Synchronized Composable (useFullscreen.ts): Manages a shared reactive isFullscreen ref across shell.vue, bubble-nav.vue, and index.vue, with fallback to @vueuse/core on web.

Verification

  • Tested toggling fullscreen from maximized state with custom decorations (covers entire screen & taskbar smoothly with zero jump).
  • Tested toggling fullscreen from normal/windowed state with custom decorations.
  • Tested toggling fullscreen with native decorations enabled.
  • Verified clean typecheck and cargo build across the workspace.

aervxa and others added 2 commits August 16, 2026 17:46
- quirk: when maximized windows leaves taskbar area buggy or smt
@SubmitCodes
SubmitCodes force-pushed the fix/fullscreen-tauri branch from 5a71360 to 5b8e5c1 Compare August 16, 2026 16:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants