From a1359eb4fa8521ae37634cdb4c5e7bcb24664b36 Mon Sep 17 00:00:00 2001 From: Yoshi Askharoun Date: Sun, 12 May 2024 00:01:42 -0500 Subject: [PATCH] Implement caption buttons --- ZuneModdingHelper/AppWindow.xaml | 6 +++--- ZuneModdingHelper/AppWindow.xaml.cs | 25 +++++++++++++++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/ZuneModdingHelper/AppWindow.xaml b/ZuneModdingHelper/AppWindow.xaml index 7fa5d64..b61654c 100644 --- a/ZuneModdingHelper/AppWindow.xaml +++ b/ZuneModdingHelper/AppWindow.xaml @@ -33,11 +33,11 @@ - - - diff --git a/ZuneModdingHelper/AppWindow.xaml.cs b/ZuneModdingHelper/AppWindow.xaml.cs index ce45343..7b807de 100644 --- a/ZuneModdingHelper/AppWindow.xaml.cs +++ b/ZuneModdingHelper/AppWindow.xaml.cs @@ -1,9 +1,6 @@ -using ControlzEx.Behaviors; -using ControlzEx.Controls.Internal; -using System; +using System; using System.Windows; using System.Windows.Interop; -using System.Windows.Shell; namespace ZuneModdingHelper { @@ -24,5 +21,25 @@ namespace ZuneModdingHelper base.OnSourceInitialized(e); _windowHandle = new WindowInteropHelper(this).EnsureHandle(); } + + private void MinimizeButton_Click(object sender, RoutedEventArgs e) => SetWindowState(WindowState.Minimized); + + private void MaximizeButton_Click(object sender, RoutedEventArgs e) + { + SetWindowState(WindowState == WindowState.Normal + ? WindowState.Maximized : WindowState.Normal); + + BorderThickness = new Thickness(WindowState == WindowState.Normal ? 0 : 8); + } + + private void CloseButton_Click(object sender, RoutedEventArgs e) => Close(); + + private void SetWindowState(WindowState state) + { + // Hack for preserving animations and window sizing (don't cover the taskbar!) + WindowStyle = WindowStyle.SingleBorderWindow; + WindowState = state; + WindowStyle = WindowStyle.None; + } } }