Skip to content

Move window titlebar logic and ui to new CustomWindowTitleBar#4501

Draft
DavidGBrett wants to merge 11 commits into
devfrom
shared-window-titlebar
Draft

Move window titlebar logic and ui to new CustomWindowTitleBar#4501
DavidGBrett wants to merge 11 commits into
devfrom
shared-window-titlebar

Conversation

@DavidGBrett
Copy link
Copy Markdown
Contributor

@DavidGBrett DavidGBrett commented May 31, 2026

Summary by cubic

Centralized the window title bar UI and logic into a reusable CustomWindowTitleBar. All affected windows now share consistent minimize/maximize/close behavior and state handling.

Summary of changes

  • Changed: Windows (SettingWindow, PluginSettingsWindow, ReleaseNotesWindow, SelectBrowserWindow, SelectFileManagerWindow, WelcomeWindow) now use CustomWindowTitleBar; SettingWindow persists state via the control’s LastNonMinimizedWindowStateChanged event.
  • Added: Reusable CustomWindowTitleBar (.xaml + .xaml.cs) with IconSource and button enable/disable properties (ShowMinimizeButton, ShowMaximizeRestoreButton, ShowCloseButton); built-in minimize/maximize/restore/close; handleable button click events; host window integration (StateChanged/Activated/Closed) and an Alt+Tab restore fix.
  • Removed: Per-window title bar XAML and code-behind (button handlers, state tracking, maximize/restore visibility logic, window event wiring) from the affected windows.
  • Memory usage: Neutral to slightly lower due to removed duplication.
  • Security risks: None; UI-only refactor with no changes to permissions or data flow.
  • Unit tests: No new unit tests.

Release Note
All settings and dialog windows, including the Welcome screen, now use a consistent title bar with the same minimize, maximize, and close behavior.

Written for commit 779ad97. Summary will update on new commits.

Review in cubic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant