From c9b5667a3f34320f103e1ab71a1a23f7e38e576a Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Wed, 30 Nov 2016 16:35:34 +0100 Subject: Issue: #39 remove delay (until next blink) when triggering on release --- source/keyb.c | 4 +--- source/rofi.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'source') 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; } -- cgit v1.2.3