gtkcomposetable: Accept long replacement strings
authorMartin Kühl <martin.kuehl@posteo.net>
Tue, 21 Sep 2021 14:56:47 +0000 (16:56 +0200)
committerMartin Kühl <martin.kuehl@posteo.net>
Tue, 21 Sep 2021 15:03:20 +0000 (17:03 +0200)
This change removes the assertions limiting replacement strings in the compose table to be less than 20 characters.
The limit seems arbitrary, is not required, will break some users' setups, and problems with it result in applications not launching.

Fixes #4273

gtk/gtkcomposetable.c
testsuite/gtk/compose/long
testsuite/gtk/compose/long.expected
testsuite/gtk/compose/match
testsuite/gtk/compose/match.expected
testsuite/gtk/composetable.c

index 6495163d888d5447f60f7f0467492a7a0ee9f0bd..e7ed9d747468bfa0184a371fd4f01bd317b6a991 100644 (file)
@@ -936,8 +936,6 @@ parser_get_compose_table (GtkComposeParser *parser)
         }
       else
         {
-          g_assert (strlen (value) < 20);
-
           if (char_data->len > 0)
             g_string_append_c (char_data, 0);
 
@@ -1437,7 +1435,6 @@ gtk_compose_table_foreach (const GtkComposeTable      *table,
                   int char_offset = encoded_value & ~(1 << 15);
                   g_assert (char_offset < table->n_chars);
                   value = &table->char_data[char_offset];
-                  g_assert (strlen (value) < 20);
                 }
               else
                 {
index 84ef7acee86169eea9ca2abd0901dbd93dd98e0f..1e57ea7b76500db138953ead2dfdbfaa1648089d 100644 (file)
@@ -1 +1,2 @@
 <Multi_key> <e> <m> <m> <e> <n> <t> <a> <l> <e> <r> : "🧀"
+<Multi_key> <t> <m> <y> <k> : "the mooore you knooow 💫"
index 0846c7f6e94d8477533b915a29b4e480d1522273..ec7035d1dbc09ab30e69005f8411fedd0e487494 100644 (file)
@@ -1,6 +1,7 @@
-# n_sequences: 1
+# n_sequences: 2
 # max_seq_len: 11
 # n_index_size: 1
-# data_size: 23
-# n_chars: 5
+# data_size: 28
+# n_chars: 32
+<Uff20> <U74> <U6d> <U79> <U6b> : "the mooore you knooow 💫"
 <Uff20> <U65> <U6d> <U6d> <U65> <U6e> <U74> <U61> <U6c> <U65> <U72> : "🧀" # U1f9c0
index 0554ac02c2f919ed35f33e1d8c84528a4d5c3f85..1cb4e74cf5cd41896f5a7e40b4ba7b4d982f91c1 100644 (file)
@@ -1,3 +1,4 @@
 <Multi_key> <s> <e> <q> : "!"
 <Multi_key> <s> <e> <q> <u> : "?"
 <Multi_key> <z> <w> <i> <n> <e> <s> : "🥂"
+<Multi_key> <l> <o> <n> <g> : "this is a long replacement string"
index bed10c5a102d032822fa2f120e3efc07b070b610..a82e7cecbfb2b5d2f5da52a0eb2c09e833ab700b 100644 (file)
@@ -1,8 +1,9 @@
-# n_sequences: 3
+# n_sequences: 4
 # max_seq_len: 7
 # n_index_size: 1
-# data_size: 24
-# n_chars: 5
+# data_size: 29
+# n_chars: 39
 <Uff20> <U73> <U65> <U71> : "!" # U21
+<Uff20> <U6c> <U6f> <U6e> <U67> : "this is a long replacement string"
 <Uff20> <U73> <U65> <U71> <U75> : "?" # U3f
 <Uff20> <U7a> <U77> <U69> <U6e> <U65> <U73> : "🥂" # U1f942
index 564416ceb8728e19b7e0488b6d43da3dbe722e81..baa83e961de48bdc3ee8f3ba83981a91e1a5e7b8 100644 (file)
@@ -229,6 +229,19 @@ compose_table_match (void)
   g_assert_true (match);
   g_assert_cmpstr (output->str, ==, "?");
 
+  g_string_set_size (output, 0);
+
+  buffer[0] = GDK_KEY_Multi_key;
+  buffer[1] = GDK_KEY_l;
+  buffer[2] = GDK_KEY_o;
+  buffer[3] = GDK_KEY_n;
+  buffer[4] = GDK_KEY_g;
+  ret = gtk_compose_table_check (table, buffer, 5, &finish, &match, output);
+  g_assert_true (ret);
+  g_assert_true (finish);
+  g_assert_true (match);
+  g_assert_cmpstr (output->str, ==, "this is a long replacement string");
+
   g_string_free (output, TRUE);
   g_free (file);
 }