symbols matrix: Remove in favor of a levels vector
This commit is contained in:
@ -602,7 +602,6 @@ struct _SymbolsParseData {
|
||||
|
||||
EekKeyboard *keyboard;
|
||||
EekKey *key;
|
||||
GSList *symbols;
|
||||
gchar *label;
|
||||
gchar *icon;
|
||||
gchar *tooltip;
|
||||
@ -684,7 +683,6 @@ symbols_start_element_callback (GMarkupParseContext *pcontext,
|
||||
data->groups = strtol (attribute, NULL, 10);
|
||||
else
|
||||
data->groups = 1;
|
||||
data->symbols = NULL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -744,27 +742,6 @@ 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,
|
||||
levels);
|
||||
head = data->symbols = g_slist_reverse (data->symbols);
|
||||
for (i = 0; i < num_symbols; i++) {
|
||||
if (head && head->data) {
|
||||
matrix->data[i] = head->data;
|
||||
head = g_slist_next (head);
|
||||
} else
|
||||
matrix->data[i] = NULL;
|
||||
}
|
||||
g_slist_free (data->symbols);
|
||||
data->symbols = NULL;
|
||||
|
||||
eek_key_set_symbol_matrix (data->key, matrix);
|
||||
eek_symbol_matrix_free (matrix);
|
||||
data->key = NULL;
|
||||
goto out;
|
||||
}
|
||||
@ -773,17 +750,16 @@ symbols_end_element_callback (GMarkupParseContext *pcontext,
|
||||
g_strcmp0 (element_name, "keysym") == 0 ||
|
||||
g_strcmp0 (element_name, "text") == 0) {
|
||||
|
||||
data->symbols = g_slist_prepend (
|
||||
data->symbols,
|
||||
squeek_symbol_new(
|
||||
element_name,
|
||||
text,
|
||||
data->keyval,
|
||||
data->label,
|
||||
data->icon,
|
||||
data->tooltip
|
||||
)
|
||||
struct squeek_symbol *symbol = squeek_symbol_new(
|
||||
element_name,
|
||||
text,
|
||||
data->keyval,
|
||||
data->label,
|
||||
data->icon,
|
||||
data->tooltip
|
||||
);
|
||||
|
||||
squeek_symbols_append(eek_key_get_symbol_matrix(data->key), symbol);
|
||||
data->keyval = 0;
|
||||
g_free(data->label);
|
||||
data->label = NULL;
|
||||
@ -795,7 +771,6 @@ symbols_end_element_callback (GMarkupParseContext *pcontext,
|
||||
}
|
||||
|
||||
if (g_strcmp0 (element_name, "invalid") == 0) {
|
||||
data->symbols = g_slist_prepend (data->symbols, NULL);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user