@@ -100,7 +100,7 @@ protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs chang
100100
101101 if ( change . Property == WindowStateProperty )
102102 {
103- _lastWindowState = ( WindowState ) change . OldValue ;
103+ _lastWindowState = ( WindowState ) change . OldValue ! ;
104104
105105 var state = ( WindowState ) change . NewValue ! ;
106106 if ( ! OperatingSystem . IsMacOS ( ) && ! UseSystemWindowFrame )
@@ -250,24 +250,11 @@ protected override void OnKeyDown(KeyEventArgs e)
250250 }
251251 else if ( e . KeyModifiers . HasFlag ( KeyModifiers . Alt ) )
252252 {
253- if ( e . Key == Key . Space && DataContext is ViewModels . Launcher launcher )
253+ if ( SwitchWorkspace ( e . Key ) )
254254 {
255- var menu = launcher . CreateContextForWorkspace ( ) ;
256- var workspacesButton = this . FindControl < Button > ( "WorkspacesButton" ) ;
257- if ( menu != null )
258- {
259- menu . PlacementTarget = workspacesButton ;
260- menu . Placement = PlacementMode . BottomEdgeAlignedLeft ;
261- menu . Open ( workspacesButton ) ;
262- }
263- }
264- else
265- {
266- SwitchToWorkspaceIndex ( e . Key ) ;
255+ e . Handled = true ;
256+ return ;
267257 }
268-
269- e . Handled = true ;
270- return ;
271258 }
272259 else if ( e . Key == Key . Escape )
273260 {
@@ -303,29 +290,6 @@ protected override void OnKeyDown(KeyEventArgs e)
303290 }
304291 }
305292
306- private void SwitchToWorkspaceIndex ( Key eKey )
307- {
308- int newIndex ;
309- switch ( eKey )
310- {
311- case Key . D1 or Key . NumPad1 : newIndex = 0 ; break ;
312- case Key . D2 or Key . NumPad2 : newIndex = 1 ; break ;
313- case Key . D3 or Key . NumPad3 : newIndex = 2 ; break ;
314- case Key . D4 or Key . NumPad4 : newIndex = 3 ; break ;
315- case Key . D5 or Key . NumPad5 : newIndex = 4 ; break ;
316- case Key . D6 or Key . NumPad6 : newIndex = 5 ; break ;
317- case Key . D7 or Key . NumPad7 : newIndex = 6 ; break ;
318- case Key . D8 or Key . NumPad8 : newIndex = 7 ; break ;
319- case Key . D9 or Key . NumPad9 : newIndex = 8 ; break ;
320- default : return ;
321- }
322-
323- if ( DataContext is ViewModels . Launcher launcher )
324- {
325- launcher . SwitchWorkspace ( newIndex ) ;
326- }
327- }
328-
329293 protected override void OnKeyUp ( KeyEventArgs e )
330294 {
331295 base . OnKeyUp ( e ) ;
@@ -350,6 +314,44 @@ private void OnOpenWorkspaceMenu(object sender, RoutedEventArgs e)
350314
351315 e . Handled = true ;
352316 }
317+
318+ private bool SwitchWorkspace ( Key eKey )
319+ {
320+ var exec = ( ViewModels . Launcher l , int idx ) =>
321+ {
322+ var pref = ViewModels . Preferences . Instance ;
323+ if ( idx < pref . Workspaces . Count )
324+ l . SwitchWorkspace ( pref . Workspaces [ idx ] ) ;
325+ return true ; // Alt+1..9 (or Option+1..9) always mark handled
326+ } ;
327+
328+ if ( DataContext is ViewModels . Launcher launcher )
329+ {
330+ switch ( eKey )
331+ {
332+ case Key . D1 or Key . NumPad1 :
333+ return exec ( launcher , 0 ) ;
334+ case Key . D2 or Key . NumPad2 :
335+ return exec ( launcher , 1 ) ;
336+ case Key . D3 or Key . NumPad3 :
337+ return exec ( launcher , 2 ) ;
338+ case Key . D4 or Key . NumPad4 :
339+ return exec ( launcher , 3 ) ;
340+ case Key . D5 or Key . NumPad5 :
341+ return exec ( launcher , 4 ) ;
342+ case Key . D6 or Key . NumPad6 :
343+ return exec ( launcher , 5 ) ;
344+ case Key . D7 or Key . NumPad7 :
345+ return exec ( launcher , 6 ) ;
346+ case Key . D8 or Key . NumPad8 :
347+ return exec ( launcher , 7 ) ;
348+ case Key . D9 or Key . NumPad9 :
349+ return exec ( launcher , 8 ) ;
350+ }
351+ }
352+
353+ return false ;
354+ }
353355
354356 private KeyModifiers _unhandledModifiers = KeyModifiers . None ;
355357 private WindowState _lastWindowState = WindowState . Normal ;
0 commit comments