summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2016-11-30 16:35:34 +0100
committerDave Davenport <qball@gmpclient.org>2016-11-30 16:35:34 +0100
commitc9b5667a3f34320f103e1ab71a1a23f7e38e576a (patch)
tree6427c270fed06e800c43eefdff29b0d50c501b9a /source
parent2220b754670cc19a419e5b0942687a1f45ecdf66 (diff)
Issue: #39 remove delay (until next blink) when triggering on release
Diffstat (limited to 'source')
-rw-r--r--source/keyb.c4
-rw-r--r--source/rofi.c12
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;
}