diff options
author | Dave Davenport <qball@gmpclient.org> | 2016-11-30 16:35:34 +0100 |
---|---|---|
committer | Dave Davenport <qball@gmpclient.org> | 2016-11-30 16:35:34 +0100 |
commit | c9b5667a3f34320f103e1ab71a1a23f7e38e576a (patch) | |
tree | 6427c270fed06e800c43eefdff29b0d50c501b9a /source | |
parent | 2220b754670cc19a419e5b0942687a1f45ecdf66 (diff) |
Issue: #39 remove delay (until next blink) when triggering on release
Diffstat (limited to 'source')
-rw-r--r-- | source/keyb.c | 4 | ||||
-rw-r--r-- | source/rofi.c | 12 |
2 files changed, 13 insertions, 3 deletions
diff --git a/source/keyb.c b/source/keyb.c index f7a69d68..71aedd3e 100644 --- a/source/keyb.c +++ b/source/keyb.c @@ -194,16 +194,14 @@ KeyBindingAction abe_find_action ( unsigned int mask, xkb_keysym_t key ) void abe_trigger_release ( void ) { RofiViewState *state; - KeyBindingAction action; state = rofi_view_get_active ( ); if ( state ) { - for ( action = 0; action < NUM_ABE; ++action ) { + for ( KeyBindingAction action = 0; action < NUM_ABE; ++action ) { if ( _abe_trigger_on_release[action] ) { rofi_view_trigger_action ( state, action ); _abe_trigger_on_release[action] = FALSE; } } - rofi_view_update ( state ); } } diff --git a/source/rofi.c b/source/rofi.c index 3ba03282..9f64369d 100644 --- a/source/rofi.c +++ b/source/rofi.c @@ -510,6 +510,18 @@ static gboolean main_loop_x11_event_handler ( xcb_generic_event_t *ev, G_GNUC_UN modmask = x11_get_current_mask ( &xkb ); if ( modmask == 0 ) { abe_trigger_release ( ); + // Because of abe_trigger, state of rofi can be changed. handle this! + RofiViewState *state = rofi_view_get_active (); + if ( state != NULL ) { + if ( rofi_view_get_completed ( state ) ) { + // This menu is done. + rofi_view_finalize ( state ); + // cleanup + if ( rofi_view_get_active () == NULL ) { + g_main_loop_quit ( main_loop ); + } + } + } } break; } |