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}" Background="{DynamicResource Brush.TitleBar}"
BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border2}" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border2}"
DoubleTapped="MaximizeOrRestoreWindow" DoubleTapped="MaximizeOrRestoreWindow"
PointerPressed="BeginMoveWindow" PointerPressed="BeginMoveWindow"/>
PointerMoved="MoveWindow"
PointerReleased="EndMoveWindow"/>
<!-- Caption Buttons (macOS) --> <!-- Caption Buttons (macOS) -->
<Border Grid.Column="0" IsVisible="{OnPlatform False, macOS=True}"> <Border Grid.Column="0" IsVisible="{OnPlatform False, macOS=True}">

View file

@ -330,8 +330,6 @@ namespace SourceGit.Views
private void MaximizeOrRestoreWindow(object _, TappedEventArgs e) private void MaximizeOrRestoreWindow(object _, TappedEventArgs e)
{ {
_pressedTitleBar = false;
if (WindowState == WindowState.Maximized) if (WindowState == WindowState.Maximized)
WindowState = WindowState.Normal; WindowState = WindowState.Normal;
else else
@ -342,34 +340,10 @@ namespace SourceGit.Views
private void BeginMoveWindow(object _, PointerPressedEventArgs e) private void BeginMoveWindow(object _, PointerPressedEventArgs e)
{ {
if (e.ClickCount != 2) if (e.ClickCount == 1)
_pressedTitleBar = true; BeginMoveDrag(e);
}
private void MoveWindow(object _, PointerEventArgs e) e.Handled = true;
{
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;
} }
protected override void OnClosed(EventArgs e) protected override void OnClosed(EventArgs e)
@ -377,7 +351,5 @@ namespace SourceGit.Views
base.OnClosed(e); base.OnClosed(e);
GC.Collect(); GC.Collect();
} }
private bool _pressedTitleBar = false;
} }
} }

View file

@ -26,9 +26,7 @@
Background="{DynamicResource Brush.TitleBar}" Background="{DynamicResource Brush.TitleBar}"
BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border2}" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border2}"
DoubleTapped="MaximizeOrRestoreWindow" DoubleTapped="MaximizeOrRestoreWindow"
PointerPressed="BeginMoveWindow" PointerPressed="BeginMoveWindow"/>
PointerMoved="MoveWindow"
PointerReleased="EndMoveWindow"/>
<!-- Caption Buttons (macOS) --> <!-- Caption Buttons (macOS) -->
<Border Grid.Column="0" IsVisible="{OnPlatform False, macOS=True}"> <Border Grid.Column="0" IsVisible="{OnPlatform False, macOS=True}">

View file

@ -1,4 +1,3 @@
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input; using Avalonia.Input;
@ -13,8 +12,6 @@ namespace SourceGit.Views
private void MaximizeOrRestoreWindow(object _, TappedEventArgs e) private void MaximizeOrRestoreWindow(object _, TappedEventArgs e)
{ {
_pressedTitleBar = false;
if (WindowState == WindowState.Maximized) if (WindowState == WindowState.Maximized)
WindowState = WindowState.Normal; WindowState = WindowState.Normal;
else else
@ -25,34 +22,10 @@ namespace SourceGit.Views
private void BeginMoveWindow(object _, PointerPressedEventArgs e) private void BeginMoveWindow(object _, PointerPressedEventArgs e)
{ {
if (e.ClickCount != 2) if (e.ClickCount == 1)
_pressedTitleBar = true; BeginMoveDrag(e);
}
private void MoveWindow(object _, PointerEventArgs e) e.Handled = true;
{
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 void OnChangeContextRequested(object sender, ContextRequestedEventArgs e) private void OnChangeContextRequested(object sender, ContextRequestedEventArgs e)
@ -73,7 +46,5 @@ namespace SourceGit.Views
e.Handled = true; e.Handled = true;
} }
private bool _pressedTitleBar = false;
} }
} }

View file

@ -11,31 +11,31 @@ namespace SourceGit.Views
InitializeComponent(); InitializeComponent();
} }
private void MinimizeWindow(object _1, RoutedEventArgs _2) private void MinimizeWindow(object _, RoutedEventArgs e)
{ {
var window = this.FindAncestorOfType<Window>(); var window = this.FindAncestorOfType<Window>();
if (window != null) if (window != null)
{
window.WindowState = WindowState.Minimized; 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>(); var window = this.FindAncestorOfType<Window>();
if (window != null) if (window != null)
{
window.WindowState = window.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; 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>(); var window = this.FindAncestorOfType<Window>();
if (window != null) if (window != null)
{
window.Close(); window.Close();
}
e.Handled = true;
} }
} }
} }

View file

@ -11,31 +11,31 @@ namespace SourceGit.Views
InitializeComponent(); InitializeComponent();
} }
private void MinimizeWindow(object _1, RoutedEventArgs _2) private void MinimizeWindow(object _, RoutedEventArgs e)
{ {
var window = this.FindAncestorOfType<Window>(); var window = this.FindAncestorOfType<Window>();
if (window != null) if (window != null)
{
window.WindowState = WindowState.Minimized; 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>(); var window = this.FindAncestorOfType<Window>();
if (window != null) if (window != null)
{
window.WindowState = window.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; 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>(); var window = this.FindAncestorOfType<Window>();
if (window != null) if (window != null)
{
window.Close(); window.Close();
}
e.Handled = true;
} }
} }
} }

View file

@ -26,9 +26,7 @@
Background="{DynamicResource Brush.TitleBar}" Background="{DynamicResource Brush.TitleBar}"
BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}"
DoubleTapped="MaximizeOrRestoreWindow" DoubleTapped="MaximizeOrRestoreWindow"
PointerPressed="BeginMoveWindow" PointerPressed="BeginMoveWindow"/>
PointerMoved="MoveWindow"
PointerReleased="EndMoveWindow"/>
<!-- Caption Buttons (macOS) --> <!-- Caption Buttons (macOS) -->
<Border Grid.Column="0" IsVisible="{OnPlatform False, macOS=True}"> <Border Grid.Column="0" IsVisible="{OnPlatform False, macOS=True}">

View file

@ -1,4 +1,3 @@
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input; using Avalonia.Input;
@ -13,8 +12,6 @@ namespace SourceGit.Views
private void MaximizeOrRestoreWindow(object _, TappedEventArgs e) private void MaximizeOrRestoreWindow(object _, TappedEventArgs e)
{ {
_pressedTitleBar = false;
if (WindowState == WindowState.Maximized) if (WindowState == WindowState.Maximized)
WindowState = WindowState.Normal; WindowState = WindowState.Normal;
else else
@ -25,36 +22,10 @@ namespace SourceGit.Views
private void BeginMoveWindow(object _, PointerPressedEventArgs e) private void BeginMoveWindow(object _, PointerPressedEventArgs e)
{ {
if (e.ClickCount != 2) if (e.ClickCount == 1)
_pressedTitleBar = true; BeginMoveDrag(e);
}
private void MoveWindow(object _, PointerEventArgs e) e.Handled = true;
{ }
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}" Background="{DynamicResource Brush.TitleBar}"
BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}"
DoubleTapped="OnTitleBarDoubleTapped" DoubleTapped="OnTitleBarDoubleTapped"
PointerPressed="BeginMoveWindow" PointerPressed="BeginMoveWindow"/>
PointerMoved="MoveWindow"
PointerReleased="EndMoveWindow"/>
<!-- Caption Buttons (macOS) --> <!-- Caption Buttons (macOS) -->
<Border Grid.Column="0" VerticalAlignment="Stretch" Margin="2,0,8,3" IsVisible="{OnPlatform False, macOS=True}"> <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) private void OnTitleBarDoubleTapped(object _, TappedEventArgs e)
{ {
_pressedTitleBar = false;
if (WindowState == WindowState.Maximized) if (WindowState == WindowState.Maximized)
WindowState = WindowState.Normal; WindowState = WindowState.Normal;
else else
@ -175,36 +173,10 @@ namespace SourceGit.Views
private void BeginMoveWindow(object _, PointerPressedEventArgs e) private void BeginMoveWindow(object _, PointerPressedEventArgs e)
{ {
if (e.ClickCount != 2) if (e.ClickCount == 1)
_pressedTitleBar = true; BeginMoveDrag(e);
}
private void MoveWindow(object _, PointerEventArgs e) e.Handled = true;
{ }
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;
} }
} }