diff options
author | Dave Davenport <qball@gmpclient.org> | 2016-11-14 16:53:01 +0100 |
---|---|---|
committer | Dave Davenport <qball@gmpclient.org> | 2016-11-14 16:53:01 +0100 |
commit | 62879ee7392018f5dbfb4cfd04fc12266168b827 (patch) | |
tree | ab48ca5ec093cb08929ede59a0e135f40578184e /source/keyb.c | |
parent | d450d02ad66a507ef531e1431b3993cc104445e3 (diff) |
Continue parsing when keybinding fail, only show errors after all are done.
Diffstat (limited to 'source/keyb.c')
-rw-r--r-- | source/keyb.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/source/keyb.c b/source/keyb.c index 1553bdb8..2bbb8210 100644 --- a/source/keyb.c +++ b/source/keyb.c @@ -109,6 +109,7 @@ void setup_abe ( void ) gboolean parse_keys_abe ( void ) { + GString *error_msg = g_string_new ( "" ); for ( int iter = 0; iter < NUM_ABE; iter++ ) { char *keystr = g_strdup ( abe[iter].keystr ); char *sp = NULL; @@ -123,15 +124,19 @@ gboolean parse_keys_abe ( void ) abe[iter].kb = g_realloc ( abe[iter].kb, ( abe[iter].num_bindings + 1 ) * sizeof ( KeyBinding ) ); KeyBinding *kb = &( abe[iter].kb[abe[iter].num_bindings] ); memset ( kb, 0, sizeof ( KeyBinding ) ); - if ( !x11_parse_key ( entry, &( kb->modmask ), &( kb->keysym ), &( kb->release ) ) ) { - g_free ( keystr ); - return FALSE; + if ( x11_parse_key ( entry, &( kb->modmask ), &( kb->keysym ), &( kb->release ), error_msg ) ) { + abe[iter].num_bindings++; } - abe[iter].num_bindings++; } g_free ( keystr ); } + if ( error_msg->len > 0 ) { + rofi_view_error_dialog ( error_msg->str, TRUE ); + g_string_free ( error_msg, TRUE ); + return FALSE; + } + g_string_free ( error_msg, TRUE ); return TRUE; } |