From 1d15c4c95ff59fab4b98579f0cffd1d426f9601b Mon Sep 17 00:00:00 2001 From: leo Date: Tue, 6 Aug 2024 15:12:44 +0800 Subject: [PATCH] fix: drag window won't stop (#326) --- src/Views/Blame.axaml | 4 +-- src/Views/Blame.axaml.cs | 34 +++-------------------- src/Views/BranchCompare.axaml | 4 +-- src/Views/BranchCompare.axaml.cs | 35 +++--------------------- src/Views/CaptionButtons.axaml.cs | 18 ++++++------- src/Views/CaptionButtonsMacOS.axaml.cs | 18 ++++++------- src/Views/FileHistories.axaml | 4 +-- src/Views/FileHistories.axaml.cs | 37 +++----------------------- src/Views/Launcher.axaml | 4 +-- src/Views/Launcher.axaml.cs | 36 +++---------------------- 10 files changed, 36 insertions(+), 158 deletions(-) diff --git a/src/Views/Blame.axaml b/src/Views/Blame.axaml index b7b23e82..065695d6 100644 --- a/src/Views/Blame.axaml +++ b/src/Views/Blame.axaml @@ -24,9 +24,7 @@ Background="{DynamicResource Brush.TitleBar}" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border2}" DoubleTapped="MaximizeOrRestoreWindow" - PointerPressed="BeginMoveWindow" - PointerMoved="MoveWindow" - PointerReleased="EndMoveWindow"/> + PointerPressed="BeginMoveWindow"/> diff --git a/src/Views/Blame.axaml.cs b/src/Views/Blame.axaml.cs index ba539d68..d873fdce 100644 --- a/src/Views/Blame.axaml.cs +++ b/src/Views/Blame.axaml.cs @@ -330,8 +330,6 @@ namespace SourceGit.Views private void MaximizeOrRestoreWindow(object _, TappedEventArgs e) { - _pressedTitleBar = false; - if (WindowState == WindowState.Maximized) WindowState = WindowState.Normal; else @@ -342,34 +340,10 @@ namespace SourceGit.Views private void BeginMoveWindow(object _, PointerPressedEventArgs e) { - if (e.ClickCount != 2) - _pressedTitleBar = true; - } + if (e.ClickCount == 1) + BeginMoveDrag(e); - private void MoveWindow(object _, PointerEventArgs e) - { - if (!_pressedTitleBar || e.Source == null) - return; - - var visual = (Visual)e.Source; - if (visual == null) - return; - -#pragma warning disable CS0618 - BeginMoveDrag(new PointerPressedEventArgs( - e.Source, - e.Pointer, - visual, - e.GetPosition(visual), - e.Timestamp, - new PointerPointProperties(RawInputModifiers.None, PointerUpdateKind.LeftButtonPressed), - e.KeyModifiers)); -#pragma warning restore CS0618 - } - - private void EndMoveWindow(object _1, PointerReleasedEventArgs _2) - { - _pressedTitleBar = false; + e.Handled = true; } protected override void OnClosed(EventArgs e) @@ -377,7 +351,5 @@ namespace SourceGit.Views base.OnClosed(e); GC.Collect(); } - - private bool _pressedTitleBar = false; } } diff --git a/src/Views/BranchCompare.axaml b/src/Views/BranchCompare.axaml index 19082420..0e6d4b86 100644 --- a/src/Views/BranchCompare.axaml +++ b/src/Views/BranchCompare.axaml @@ -26,9 +26,7 @@ Background="{DynamicResource Brush.TitleBar}" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border2}" DoubleTapped="MaximizeOrRestoreWindow" - PointerPressed="BeginMoveWindow" - PointerMoved="MoveWindow" - PointerReleased="EndMoveWindow"/> + PointerPressed="BeginMoveWindow"/> diff --git a/src/Views/BranchCompare.axaml.cs b/src/Views/BranchCompare.axaml.cs index 293a9091..844a1b6b 100644 --- a/src/Views/BranchCompare.axaml.cs +++ b/src/Views/BranchCompare.axaml.cs @@ -1,4 +1,3 @@ -using Avalonia; using Avalonia.Controls; using Avalonia.Input; @@ -13,8 +12,6 @@ namespace SourceGit.Views private void MaximizeOrRestoreWindow(object _, TappedEventArgs e) { - _pressedTitleBar = false; - if (WindowState == WindowState.Maximized) WindowState = WindowState.Normal; else @@ -25,34 +22,10 @@ namespace SourceGit.Views private void BeginMoveWindow(object _, PointerPressedEventArgs e) { - if (e.ClickCount != 2) - _pressedTitleBar = true; - } + if (e.ClickCount == 1) + BeginMoveDrag(e); - private void MoveWindow(object _, PointerEventArgs e) - { - if (!_pressedTitleBar || e.Source == null) - return; - - var visual = (Visual)e.Source; - if (visual == null) - return; - -#pragma warning disable CS0618 - BeginMoveDrag(new PointerPressedEventArgs( - e.Source, - e.Pointer, - visual, - e.GetPosition(visual), - e.Timestamp, - new PointerPointProperties(RawInputModifiers.None, PointerUpdateKind.LeftButtonPressed), - e.KeyModifiers)); -#pragma warning restore CS0618 - } - - private void EndMoveWindow(object _1, PointerReleasedEventArgs _2) - { - _pressedTitleBar = false; + e.Handled = true; } private void OnChangeContextRequested(object sender, ContextRequestedEventArgs e) @@ -73,7 +46,5 @@ namespace SourceGit.Views e.Handled = true; } - - private bool _pressedTitleBar = false; } } diff --git a/src/Views/CaptionButtons.axaml.cs b/src/Views/CaptionButtons.axaml.cs index 767760fc..5c9d17df 100644 --- a/src/Views/CaptionButtons.axaml.cs +++ b/src/Views/CaptionButtons.axaml.cs @@ -11,31 +11,31 @@ namespace SourceGit.Views InitializeComponent(); } - private void MinimizeWindow(object _1, RoutedEventArgs _2) + private void MinimizeWindow(object _, RoutedEventArgs e) { var window = this.FindAncestorOfType(); if (window != null) - { window.WindowState = WindowState.Minimized; - } + + e.Handled = true; } - private void MaximizeOrRestoreWindow(object _1, RoutedEventArgs _2) + private void MaximizeOrRestoreWindow(object _, RoutedEventArgs e) { var window = this.FindAncestorOfType(); if (window != null) - { window.WindowState = window.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; - } + + e.Handled = true; } - private void CloseWindow(object _1, RoutedEventArgs _2) + private void CloseWindow(object _, RoutedEventArgs e) { var window = this.FindAncestorOfType(); if (window != null) - { window.Close(); - } + + e.Handled = true; } } } diff --git a/src/Views/CaptionButtonsMacOS.axaml.cs b/src/Views/CaptionButtonsMacOS.axaml.cs index 33e7a562..a520ad9e 100644 --- a/src/Views/CaptionButtonsMacOS.axaml.cs +++ b/src/Views/CaptionButtonsMacOS.axaml.cs @@ -11,31 +11,31 @@ namespace SourceGit.Views InitializeComponent(); } - private void MinimizeWindow(object _1, RoutedEventArgs _2) + private void MinimizeWindow(object _, RoutedEventArgs e) { var window = this.FindAncestorOfType(); if (window != null) - { window.WindowState = WindowState.Minimized; - } + + e.Handled = true; } - private void MaximizeOrRestoreWindow(object _1, RoutedEventArgs _2) + private void MaximizeOrRestoreWindow(object _, RoutedEventArgs e) { var window = this.FindAncestorOfType(); if (window != null) - { window.WindowState = window.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; - } + + e.Handled = true; } - private void CloseWindow(object _1, RoutedEventArgs _2) + private void CloseWindow(object _, RoutedEventArgs e) { var window = this.FindAncestorOfType(); if (window != null) - { window.Close(); - } + + e.Handled = true; } } } diff --git a/src/Views/FileHistories.axaml b/src/Views/FileHistories.axaml index 3b44e5ec..ace50cc6 100644 --- a/src/Views/FileHistories.axaml +++ b/src/Views/FileHistories.axaml @@ -26,9 +26,7 @@ Background="{DynamicResource Brush.TitleBar}" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}" DoubleTapped="MaximizeOrRestoreWindow" - PointerPressed="BeginMoveWindow" - PointerMoved="MoveWindow" - PointerReleased="EndMoveWindow"/> + PointerPressed="BeginMoveWindow"/> diff --git a/src/Views/FileHistories.axaml.cs b/src/Views/FileHistories.axaml.cs index 0d006413..fc525f14 100644 --- a/src/Views/FileHistories.axaml.cs +++ b/src/Views/FileHistories.axaml.cs @@ -1,4 +1,3 @@ -using Avalonia; using Avalonia.Controls; using Avalonia.Input; @@ -13,8 +12,6 @@ namespace SourceGit.Views private void MaximizeOrRestoreWindow(object _, TappedEventArgs e) { - _pressedTitleBar = false; - if (WindowState == WindowState.Maximized) WindowState = WindowState.Normal; else @@ -25,36 +22,10 @@ namespace SourceGit.Views private void BeginMoveWindow(object _, PointerPressedEventArgs e) { - if (e.ClickCount != 2) - _pressedTitleBar = true; + if (e.ClickCount == 1) + BeginMoveDrag(e); + + e.Handled = true; } - - private void MoveWindow(object _, PointerEventArgs e) - { - if (!_pressedTitleBar || e.Source == null) - return; - - var visual = (Visual)e.Source; - if (visual == null) - return; - -#pragma warning disable CS0618 - BeginMoveDrag(new PointerPressedEventArgs( - e.Source, - e.Pointer, - visual, - e.GetPosition(visual), - e.Timestamp, - new PointerPointProperties(RawInputModifiers.None, PointerUpdateKind.LeftButtonPressed), - e.KeyModifiers)); -#pragma warning restore CS0618 - } - - private void EndMoveWindow(object _1, PointerReleasedEventArgs _2) - { - _pressedTitleBar = false; - } - - private bool _pressedTitleBar = false; } } diff --git a/src/Views/Launcher.axaml b/src/Views/Launcher.axaml index b30789d9..4a3ff4c5 100644 --- a/src/Views/Launcher.axaml +++ b/src/Views/Launcher.axaml @@ -25,9 +25,7 @@ Background="{DynamicResource Brush.TitleBar}" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}" DoubleTapped="OnTitleBarDoubleTapped" - PointerPressed="BeginMoveWindow" - PointerMoved="MoveWindow" - PointerReleased="EndMoveWindow"/> + PointerPressed="BeginMoveWindow"/> diff --git a/src/Views/Launcher.axaml.cs b/src/Views/Launcher.axaml.cs index 36eb0589..dc9f91d2 100644 --- a/src/Views/Launcher.axaml.cs +++ b/src/Views/Launcher.axaml.cs @@ -163,8 +163,6 @@ namespace SourceGit.Views private void OnTitleBarDoubleTapped(object _, TappedEventArgs e) { - _pressedTitleBar = false; - if (WindowState == WindowState.Maximized) WindowState = WindowState.Normal; else @@ -175,36 +173,10 @@ namespace SourceGit.Views private void BeginMoveWindow(object _, PointerPressedEventArgs e) { - if (e.ClickCount != 2) - _pressedTitleBar = true; + if (e.ClickCount == 1) + BeginMoveDrag(e); + + e.Handled = true; } - - private void MoveWindow(object _, PointerEventArgs e) - { - if (!_pressedTitleBar || e.Source == null) - return; - - var visual = (Visual)e.Source; - if (visual == null) - return; - -#pragma warning disable CS0618 - BeginMoveDrag(new PointerPressedEventArgs( - e.Source, - e.Pointer, - visual, - e.GetPosition(visual), - e.Timestamp, - new PointerPointProperties(RawInputModifiers.None, PointerUpdateKind.LeftButtonPressed), - e.KeyModifiers)); -#pragma warning restore CS0618 - } - - private void EndMoveWindow(object _1, PointerReleasedEventArgs _2) - { - _pressedTitleBar = false; - } - - private bool _pressedTitleBar = false; } }