summaryrefslogtreecommitdiffstats
path: root/source/keyb.c
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2016-03-05 11:08:32 +0100
committerDave Davenport <qball@gmpclient.org>2016-03-05 11:08:32 +0100
commit72dfe2ad4c37d98b789019bb0f2b2bd3fc9e8971 (patch)
treee05391a8b7d6e5293b4f5f9801b061282a1fff99 /source/keyb.c
parent881ca572df59e2b39e4a123af68e46068b35a424 (diff)
Propagate error down, show dialog.
Fix positioning dialog.
Diffstat (limited to 'source/keyb.c')
-rw-r--r--source/keyb.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/source/keyb.c b/source/keyb.c
index db4fc515..9916a276 100644
--- a/source/keyb.c
+++ b/source/keyb.c
@@ -100,7 +100,7 @@ void setup_abe ( void )
}
}
-void parse_keys_abe ( void )
+gboolean parse_keys_abe ( void )
{
for ( int iter = 0; iter < NUM_ABE; iter++ ) {
char *keystr = g_strdup ( abe[iter].keystr );
@@ -114,12 +114,16 @@ void parse_keys_abe ( void )
for ( char *entry = strtok_r ( keystr, ",", &sp ); entry != NULL; entry = strtok_r ( NULL, ",", &sp ) ) {
abe[iter].kb = g_realloc ( abe[iter].kb, ( abe[iter].num_bindings + 1 ) * sizeof ( KeyBinding ) );
KeyBinding *kb = &( abe[iter].kb[abe[iter].num_bindings] );
- x11_parse_key ( entry, &( kb->modmask ), &( kb->keysym ) );
+ if ( !x11_parse_key ( entry, &( kb->modmask ), &( kb->keysym ) ) ) {
+ g_free ( keystr );
+ return FALSE;
+ }
abe[iter].num_bindings++;
}
g_free ( keystr );
}
+ return TRUE;
}
void cleanup_abe ( void )