Global back listener for mouse.

This commit is contained in:
Burak Kaan Köse
2026-01-06 17:34:06 +01:00
parent f105c2f8f0
commit 319b0af305
2 changed files with 45 additions and 13 deletions
@@ -221,18 +221,18 @@ public class NavigationService : NavigationServiceBase, INavigationService
return; return;
} }
if (_statePersistanceService.ApplicationMode == WinoApplicationMode.Calendar)
{
var innerShellFrame = GetCoreFrame(NavigationReferenceFrame.InnerShellFrame); var innerShellFrame = GetCoreFrame(NavigationReferenceFrame.InnerShellFrame);
if (innerShellFrame?.CanGoBack == true)
if (_statePersistanceService.ApplicationMode == WinoApplicationMode.Calendar && innerShellFrame?.CanGoBack == true)
{ {
innerShellFrame.GoBack(); innerShellFrame.GoBack();
// Calendar mode: Navigate back from EventDetailsPage // Calendar mode: Navigate back from EventDetailsPage
_statePersistanceService.IsEventDetailsVisible = false; _statePersistanceService.IsEventDetailsVisible = false;
} }
}
else else
{
if (_statePersistanceService.IsReadingMail && _statePersistanceService.IsReaderNarrowed)
{ {
// Mail mode: Clear selections and dispose rendering frame // Mail mode: Clear selections and dispose rendering frame
_statePersistanceService.IsReadingMail = false; _statePersistanceService.IsReadingMail = false;
@@ -240,6 +240,11 @@ public class NavigationService : NavigationServiceBase, INavigationService
WeakReferenceMessenger.Default.Send(new ClearMailSelectionsRequested()); WeakReferenceMessenger.Default.Send(new ClearMailSelectionsRequested());
WeakReferenceMessenger.Default.Send(new DisposeRenderingFrameRequested()); WeakReferenceMessenger.Default.Send(new DisposeRenderingFrameRequested());
} }
else if (innerShellFrame != null && innerShellFrame.CanGoBack)
{
innerShellFrame.GoBack();
}
}
} }
// Standalone EML viewer. // Standalone EML viewer.
+27
View File
@@ -41,6 +41,9 @@ public sealed partial class ShellWindow : WindowEx, IWinoShellWindow, IRecipient
// Use the AppWindow.Closing event to handle the close request // Use the AppWindow.Closing event to handle the close request
AppWindow.Closing += OnAppWindowClosing; AppWindow.Closing += OnAppWindowClosing;
// Register global mouse button listener for back button
RegisterMouseBackButtonListener();
ShowWinoCommand = new RelayCommand(RestoreFromTray); ShowWinoCommand = new RelayCommand(RestoreFromTray);
ExitWinoCommand = new RelayCommand(ForceClose); ExitWinoCommand = new RelayCommand(ForceClose);
@@ -66,6 +69,30 @@ public sealed partial class ShellWindow : WindowEx, IWinoShellWindow, IRecipient
} }
} }
private void RegisterMouseBackButtonListener()
{
// Subscribe to pointer pressed events on the root content
if (Content is UIElement rootElement)
{
rootElement.AddHandler(UIElement.PointerPressedEvent, new Microsoft.UI.Xaml.Input.PointerEventHandler(OnPointerPressed), true);
}
}
private void OnPointerPressed(object sender, Microsoft.UI.Xaml.Input.PointerRoutedEventArgs e)
{
// Check if it's the back button (XButton1)
var pointerPoint = e.GetCurrentPoint(null);
var properties = pointerPoint.Properties;
// XButton1 is the back button on most mice
if (properties.IsXButton1Pressed)
{
// Call GoBack on NavigationService
NavigationService.GoBack();
e.Handled = true;
}
}
public void HandleAppActivation(LaunchActivatedEventArgs args) public void HandleAppActivation(LaunchActivatedEventArgs args)
{ {
// Parse launch arguments to determine the application mode // Parse launch arguments to determine the application mode