From 27fd5829f57bcc004c3c4daf8169edb076c0869d Mon Sep 17 00:00:00 2001 From: Gadfly Date: Fri, 26 Apr 2024 23:26:19 +0800 Subject: [PATCH] feat: repository tab add the ability to close repository tabs using the middle mouse button --- src/Views/Launcher.axaml.cs | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/Views/Launcher.axaml.cs b/src/Views/Launcher.axaml.cs index 916f75f7..a4068eeb 100644 --- a/src/Views/Launcher.axaml.cs +++ b/src/Views/Launcher.axaml.cs @@ -238,13 +238,36 @@ namespace SourceGit.Views private void OnPointerPressedTab(object sender, PointerPressedEventArgs e) { - _pressedTab = true; - _startDrag = false; - _pressedTabPosition = e.GetPosition(sender as Border); + var point = e.GetCurrentPoint(this); + if (point.Properties.IsMiddleButtonPressed) + { + _middleButtonPressed = true; + } + else + { + _pressedTab = true; + _startDrag = false; + _pressedTabPosition = e.GetPosition(sender as Border); + } } private void OnPointerReleasedTab(object sender, PointerReleasedEventArgs e) { + if (_middleButtonPressed) + { + if (sender is Border border) + { + var point = e.GetPosition(border); + if (border.Bounds.Contains(point)) + { + if (DataContext is ViewModels.Launcher vm) + { + vm.CloseTab(border.DataContext as ViewModels.LauncherPage); + } + } + } + _middleButtonPressed = false; + } _pressedTab = false; _startDrag = false; } @@ -337,5 +360,6 @@ namespace SourceGit.Views private bool _pressedTab = false; private Point _pressedTabPosition = new Point(); private bool _startDrag = false; + private bool _middleButtonPressed = false; } }