summaryrefslogtreecommitdiffstats
path: root/source/keyb.c
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2016-11-14 16:53:01 +0100
committerDave Davenport <qball@gmpclient.org>2016-11-14 16:53:01 +0100
commit62879ee7392018f5dbfb4cfd04fc12266168b827 (patch)
treeab48ca5ec093cb08929ede59a0e135f40578184e /source/keyb.c
parentd450d02ad66a507ef531e1431b3993cc104445e3 (diff)
Continue parsing when keybinding fail, only show errors after all are done.
Diffstat (limited to 'source/keyb.c')
-rw-r--r--source/keyb.c13
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;
}