diff --git a/src/Resources/Icons.xaml b/src/Resources/Icons.xaml index fe73834a..337e2030 100644 --- a/src/Resources/Icons.xaml +++ b/src/Resources/Icons.xaml @@ -13,6 +13,7 @@ M797 486H224c-14 0-25 11-25 25c0 14 11 25 25 25H797c14 0 25-11 25-25c0-14-11-25-25-25z M153 154h768v768h-768v-768zm64 64v640h640v-640h-640z + M256 128l0 192L64 320l0 576 704 0 0-192 192 0L960 128 256 128zM704 832 128 832 128 384l576 0L704 832zM896 640l-128 0L768 320 320 320 320 192l576 0L896 640z M519 459 222 162a37 37 0 10-52 52l297 297L169 809a37 37 0 1052 52l297-297 297 297a37 37 0 1052-52l-297-297 297-297a37 37 0 10-52-52L519 459z M512 597m-1 0a1 1 0 103 0a1 1 0 10-3 0ZM810 393 732 315 448 600 293 444 214 522l156 156 78 78 362-362z M512 0C233 0 7 223 0 500C6 258 190 64 416 64c230 0 416 200 416 448c0 53 43 96 96 96s96-43 96-96c0-283-229-512-512-512zm0 1023c279 0 505-223 512-500c-6 242-190 436-416 436c-230 0-416-200-416-448c0-53-43-96-96-96s-96 43-96 96c0 283 229 512 512 512z diff --git a/src/Resources/Styles/ToggleButton.xaml b/src/Resources/Styles/ToggleButton.xaml index f9c43e97..df40008e 100644 --- a/src/Resources/Styles/ToggleButton.xaml +++ b/src/Resources/Styles/ToggleButton.xaml @@ -142,4 +142,38 @@ + + \ No newline at end of file diff --git a/src/Views/Blame.xaml b/src/Views/Blame.xaml index 0c7f5ba3..85c4cdea 100644 --- a/src/Views/Blame.xaml +++ b/src/Views/Blame.xaml @@ -1,5 +1,6 @@ - + diff --git a/src/Views/Blame.xaml.cs b/src/Views/Blame.xaml.cs index 208d8642..f84ce549 100644 --- a/src/Views/Blame.xaml.cs +++ b/src/Views/Blame.xaml.cs @@ -114,14 +114,6 @@ namespace SourceGit.Views { SystemCommands.MinimizeWindow(this); } - private void MaximizeOrRestore(object sender, RoutedEventArgs e) { - if (WindowState == WindowState.Normal) { - SystemCommands.MaximizeWindow(this); - } else { - SystemCommands.RestoreWindow(this); - } - } - private void Quit(object sender, RoutedEventArgs e) { Close(); } diff --git a/src/Views/Controls/Window.cs b/src/Views/Controls/Window.cs index c1224c37..d152630a 100644 --- a/src/Views/Controls/Window.cs +++ b/src/Views/Controls/Window.cs @@ -8,6 +8,17 @@ namespace SourceGit.Views.Controls { /// public class Window : System.Windows.Window { + public static readonly DependencyProperty IsMaximizedProperty = DependencyProperty.Register( + "IsMaximized", + typeof(bool), + typeof(Window), + new PropertyMetadata(false, OnIsMaximizedChanged)); + + public bool IsMaximized { + get { return (bool)GetValue(IsMaximizedProperty); } + set { SetValue(IsMaximizedProperty, value); } + } + public Window() { Background = FindResource("Brush.Window") as Brush; BorderBrush = FindResource("Brush.WindowBorder") as Brush; @@ -29,13 +40,26 @@ namespace SourceGit.Views.Controls { var content = Content as FrameworkElement; if (WindowState == WindowState.Maximized) { + if (!IsMaximized) IsMaximized = true; BorderThickness = new Thickness(0); content.Margin = new Thickness((SystemParameters.MaximizedPrimaryScreenWidth - SystemParameters.WorkArea.Width) / 2); } else { + if (IsMaximized) IsMaximized = false; BorderThickness = new Thickness(1); content.Margin = new Thickness(0); } }; } + + private static void OnIsMaximizedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { + Window w = d as Window; + if (w != null) { + if (w.IsMaximized) { + SystemCommands.MaximizeWindow(w); + } else { + SystemCommands.RestoreWindow(w); + } + } + } } } diff --git a/src/Views/Histories.xaml b/src/Views/Histories.xaml index 8467dbb9..56e7fe34 100644 --- a/src/Views/Histories.xaml +++ b/src/Views/Histories.xaml @@ -1,5 +1,6 @@ - + diff --git a/src/Views/Histories.xaml.cs b/src/Views/Histories.xaml.cs index 8d8b8d5a..785827c1 100644 --- a/src/Views/Histories.xaml.cs +++ b/src/Views/Histories.xaml.cs @@ -36,14 +36,6 @@ namespace SourceGit.Views { SystemCommands.MinimizeWindow(this); } - private void MaximizeOrRestore(object sender, RoutedEventArgs e) { - if (WindowState == WindowState.Normal) { - SystemCommands.MaximizeWindow(this); - } else { - SystemCommands.RestoreWindow(this); - } - } - private void Quit(object sender, RoutedEventArgs e) { Close(); } diff --git a/src/Views/Launcher.xaml b/src/Views/Launcher.xaml index f6b659f7..cc01bfc4 100644 --- a/src/Views/Launcher.xaml +++ b/src/Views/Launcher.xaml @@ -43,7 +43,7 @@ - + diff --git a/src/Views/Launcher.xaml.cs b/src/Views/Launcher.xaml.cs index 7173ec0e..5e47ef50 100644 --- a/src/Views/Launcher.xaml.cs +++ b/src/Views/Launcher.xaml.cs @@ -57,14 +57,6 @@ namespace SourceGit.Views { SystemCommands.MinimizeWindow(this); } - private void MaximizeOrRestore(object sender, RoutedEventArgs e) { - if (WindowState == WindowState.Normal) { - SystemCommands.MaximizeWindow(this); - } else { - SystemCommands.RestoreWindow(this); - } - } - private void Quit(object sender, RoutedEventArgs e) { Application.Current.Shutdown(); }