fix: drag window won't stop (#326)

This commit is contained in:
leo 2024-08-06 15:12:44 +08:00
parent 2e433aa278
commit 1d15c4c95f
No known key found for this signature in database
10 changed files with 36 additions and 158 deletions

View file

@ -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"/>
<!-- Caption Buttons (macOS) -->
<Border Grid.Column="0" IsVisible="{OnPlatform False, macOS=True}">

View file

@ -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;
}
}

View file

@ -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"/>
<!-- Caption Buttons (macOS) -->
<Border Grid.Column="0" IsVisible="{OnPlatform False, macOS=True}">

View file

@ -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;
}
}

View file

@ -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<Window>();
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<Window>();
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<Window>();
if (window != null)
{
window.Close();
}
e.Handled = true;
}
}
}

View file

@ -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<Window>();
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<Window>();
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<Window>();
if (window != null)
{
window.Close();
}
e.Handled = true;
}
}
}

View file

@ -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"/>
<!-- Caption Buttons (macOS) -->
<Border Grid.Column="0" IsVisible="{OnPlatform False, macOS=True}">

View file

@ -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;
}
}

View file

@ -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"/>
<!-- Caption Buttons (macOS) -->
<Border Grid.Column="0" VerticalAlignment="Stretch" Margin="2,0,8,3" IsVisible="{OnPlatform False, macOS=True}">

View file

@ -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;
}
}