From baf848c7919cb3ac5a4862229ce0ca694b2a9e12 Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Sun, 30 Jun 2019 20:38:35 +0000 Subject: [PATCH] layout: Ignore keycodes without corresponding keys --- eek/eek-xml-layout.c | 8 ++++++-- eekboard/eekboard-context-service.c | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/eek/eek-xml-layout.c b/eek/eek-xml-layout.c index ccee00be..454dd508 100644 --- a/eek/eek-xml-layout.c +++ b/eek/eek-xml-layout.c @@ -640,13 +640,13 @@ symbols_start_element_callback (GMarkupParseContext *pcontext, data->key = eek_keyboard_find_key_by_keycode (data->keyboard, keycode); - if (data->key == NULL) { + /*if (data->key == NULL) { g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, "no such keycode %u", keycode); return; - } + }*/ attribute = get_attribute (attribute_names, attribute_values, "groups"); @@ -721,6 +721,10 @@ symbols_end_element_callback (GMarkupParseContext *pcontext, text = g_strndup (data->text->str, data->text->len); if (g_strcmp0 (element_name, "key") == 0) { + if (!data->key) { + return; + } + gint num_symbols = g_slist_length (data->symbols); gint levels = num_symbols / data->groups; EekSymbolMatrix *matrix = eek_symbol_matrix_new (data->groups, diff --git a/eekboard/eekboard-context-service.c b/eekboard/eekboard-context-service.c index 18a9e162..16336818 100644 --- a/eekboard/eekboard-context-service.c +++ b/eekboard/eekboard-context-service.c @@ -136,6 +136,9 @@ eekboard_context_service_real_create_keyboard (EekboardContextService *self, } } keyboard = eek_keyboard_new (self, layout, CSW, CSH); + if (!keyboard) { + g_error("Failed to create a keyboard"); + } g_object_unref (layout); struct xkb_context *context = xkb_context_new(XKB_CONTEXT_NO_FLAGS);