@@ -38,6 +38,7 @@ typedef struct {
3838 unsigned current ;
3939 unsigned handle_hotkeys ;
4040 Windows desktops [NUM_DESKTOPS ];
41+ HWND focused [NUM_DESKTOPS ];
4142 Trayicon trayicon ;
4243} Virgo ;
4344
@@ -234,7 +235,7 @@ static void virgo_toggle_hotkeys(Virgo *v)
234235 if (v -> handle_hotkeys ) {
235236 for (i = 0 ; i < NUM_DESKTOPS ; i ++ ) {
236237 register_hotkey (i * 2 , MOD_ALT | MOD_NOREPEAT , i + 1 + '0' );
237- register_hotkey (i * 2 + 1 , MOD_CONTROL | MOD_NOREPEAT , i + 1 + '0' );
238+ register_hotkey (i * 2 + 1 , MOD_ALT | MOD_SHIFT | MOD_NOREPEAT , i + 1 + '0' );
238239 }
239240 } else {
240241 for (i = 0 ; i < NUM_DESKTOPS ; i ++ ) {
@@ -250,7 +251,7 @@ static void virgo_init(Virgo *v)
250251 v -> handle_hotkeys = 1 ;
251252 for (i = 0 ; i < NUM_DESKTOPS ; i ++ ) {
252253 register_hotkey (i * 2 , MOD_ALT | MOD_NOREPEAT , i + 1 + '0' );
253- register_hotkey (i * 2 + 1 , MOD_CONTROL | MOD_NOREPEAT , i + 1 + '0' );
254+ register_hotkey (i * 2 + 1 , MOD_ALT | MOD_SHIFT | MOD_NOREPEAT , i + 1 + '0' );
254255 }
255256 register_hotkey (i * 2 , MOD_ALT | MOD_CONTROL | MOD_SHIFT | MOD_NOREPEAT ,
256257 'Q' );
@@ -291,8 +292,10 @@ static void virgo_go_to_desk(Virgo *v, unsigned desk)
291292 return ;
292293 }
293294 virgo_update (v );
295+ v -> focused [v -> current ] = GetForegroundWindow ();
294296 windows_hide (& v -> desktops [v -> current ]);
295297 windows_show (& v -> desktops [desk ]);
298+ SetForegroundWindow (v -> focused [desk ]);
296299 v -> current = desk ;
297300 trayicon_set (& v -> trayicon , v -> current + 1 );
298301}
0 commit comments