@@ -100,7 +100,7 @@ protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs chang
100
100
101
101
if ( change . Property == WindowStateProperty )
102
102
{
103
- _lastWindowState = ( WindowState ) change . OldValue ;
103
+ _lastWindowState = ( WindowState ) change . OldValue ! ;
104
104
105
105
var state = ( WindowState ) change . NewValue ! ;
106
106
if ( ! OperatingSystem . IsMacOS ( ) && ! UseSystemWindowFrame )
@@ -250,24 +250,11 @@ protected override void OnKeyDown(KeyEventArgs e)
250
250
}
251
251
else if ( e . KeyModifiers . HasFlag ( KeyModifiers . Alt ) )
252
252
{
253
- if ( e . Key == Key . Space && DataContext is ViewModels . Launcher launcher )
253
+ if ( SwitchWorkspace ( e . Key ) )
254
254
{
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 ;
267
257
}
268
-
269
- e . Handled = true ;
270
- return ;
271
258
}
272
259
else if ( e . Key == Key . Escape )
273
260
{
@@ -303,29 +290,6 @@ protected override void OnKeyDown(KeyEventArgs e)
303
290
}
304
291
}
305
292
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
-
329
293
protected override void OnKeyUp ( KeyEventArgs e )
330
294
{
331
295
base . OnKeyUp ( e ) ;
@@ -350,6 +314,44 @@ private void OnOpenWorkspaceMenu(object sender, RoutedEventArgs e)
350
314
351
315
e . Handled = true ;
352
316
}
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
+ }
353
355
354
356
private KeyModifiers _unhandledModifiers = KeyModifiers . None ;
355
357
private WindowState _lastWindowState = WindowState . Normal ;
0 commit comments