From: Matthias Clasen Date: Mon, 28 Aug 2023 20:38:47 +0000 (-0400) Subject: composetable: Accept short compose sequences X-Git-Tag: archive/raspbian/4.12.4+ds-3+rpi1^2~21^2~2^2~33 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8957f9f5a89c61c294048825be3e4486775bcb08;p=gtk4.git composetable: Accept short compose sequences Followup to 8931169e0026b2db. That commit did not do enough work to actually accept sequences of lenth 1, as pointed by Mike Fabian. --- diff --git a/gtk/gtkcomposetable.c b/gtk/gtkcomposetable.c index b8842d9731..538003923a 100644 --- a/gtk/gtkcomposetable.c +++ b/gtk/gtkcomposetable.c @@ -1331,10 +1331,27 @@ gtk_compose_table_check (const GtkComposeTable *table, if (!seq_index) return FALSE; + match = FALSE; + if (n_compose == 1) - return TRUE; + { + if (seq_index[2] - seq_index[1] > 0) + { + seq = table->data + seq_index[1]; - match = FALSE; + value = seq[0]; + + if ((value & (1 << 15)) != 0) + g_string_append (output, &table->char_data[value & ~(1 << 15)]); + else + g_string_append_unichar (output, value); + + if (compose_match) + *compose_match = TRUE; + } + + return TRUE; + } for (i = n_compose - 1; i < table->max_seq_len; i++) { diff --git a/gtk/gtkcomposetable.h b/gtk/gtkcomposetable.h index f6665e63c0..4597858f45 100644 --- a/gtk/gtkcomposetable.h +++ b/gtk/gtkcomposetable.h @@ -30,12 +30,13 @@ typedef struct _GtkComposeTableCompact GtkComposeTableCompact; * The first part of the data contains rows of length max_seq_len + 1, * where the first element is the item of the sequence, and the * following elements are offsets to the data for sequences that - * start with the first item of length 2, ..., max_seq_len. + * start with the first item of length 1, ..., max_seq_len. * * The second part of the data contains the rest of the sequence * data. It does not have a fixed stride. For each sequence, we * put seq[2], ..., seq[len - 1], followed by the encoded value - * for this sequence. + * for this sequence. In particular for a sequence of length 1, + * the offset points directly to the value. * * The values are encoded as follows: *