gtk4/3386.patch

303 lines
12 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From f98abe4400eccf6478b6569d67564e5b8cfc60b1 Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Thu, 1 Apr 2021 15:15:47 -0400
Subject: [PATCH 1/2] Revert Compose sequence changes
This was breaking muscle memory of people with
the us intl keyboard layout, for important keys
such as '. The unfortunate side-effect is that
our handling of <dead_acute> is a bit hampered
by sequences that don't fit the pattern. But
such is life.
Fixes: #3807
---
gtk/compose/gtk-compose-lookaside.txt | 4 --
gtk/compose/gtk-compose-remove.txt | 14 -----
gtk/gtkimcontextsimpleseqs.h | 73 ++++++++++++++++-----------
3 files changed, 43 insertions(+), 48 deletions(-)
delete mode 100644 gtk/compose/gtk-compose-remove.txt
diff --git a/gtk/compose/gtk-compose-lookaside.txt b/gtk/compose/gtk-compose-lookaside.txt
index c846cc8121..3f3b23c69c 100644
--- a/gtk/compose/gtk-compose-lookaside.txt
+++ b/gtk/compose/gtk-compose-lookaside.txt
@@ -403,7 +403,3 @@
<Multi_key> <Greek_omicron> <apostrophe> : "ό" U03CC
<Multi_key> <Greek_upsilon> <apostrophe> : "ύ" U03CD
<Multi_key> <Greek_omega> <apostrophe> : "ώ" U03CE
-
-# This sequence matches our handling of dead keys better.
-# We remove the xorg sequence that maps this to '
-<dead_acute> <space> : "´" acute # ACUTE ACCENT
diff --git a/gtk/compose/gtk-compose-remove.txt b/gtk/compose/gtk-compose-remove.txt
deleted file mode 100644
index 620df9e9ce..0000000000
--- a/gtk/compose/gtk-compose-remove.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-<dead_tilde> <dead_tilde> : "~" asciitilde # TILDE
-<dead_acute> <space> : "'" apostrophe # APOSTROPHE
-<dead_acute> <dead_acute> : "´" acute # ACUTE ACCENT
-<dead_grave> <dead_grave> : "`" grave # GRAVE ACCENT
-<dead_abovering> <dead_abovering> : "°" degree # DEGREE SIGN
-<dead_macron> <dead_macron> : "¯" macron # MACRON
-<dead_breve> <dead_breve> : "˘" breve # BREVE
-<dead_abovedot> <dead_abovedot> : "˙" abovedot # DOT ABOVE
-<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis # DIAERESIS
-<dead_doubleacute> <dead_doubleacute> : "˝" U2dd # DOUBLE ACUTE ACCENT
-<dead_caron> <dead_caron> : "ˇ" caron # CARON
-<dead_cedilla> <dead_cedilla> : "¸" cedilla # CEDILLA
-<dead_ogonek> <dead_ogonek> : "˛" ogonek # OGONEK
-<dead_iota> <dead_iota> : "ͺ" U37a # GREEK YPOGEGRAMMENI
diff --git a/gtk/gtkimcontextsimpleseqs.h b/gtk/gtkimcontextsimpleseqs.h
index 901d1c4af6..99a2dd4289 100644
--- a/gtk/gtkimcontextsimpleseqs.h
+++ b/gtk/gtkimcontextsimpleseqs.h
@@ -66,35 +66,35 @@
static const guint16 gtk_compose_seqs_compact[] = {
GDK_KEY_Greek_accentdieresis, 180, 184, 184, 184, 184,
-GDK_KEY_dead_grave, 184, 244, 331, 543, 543,
-GDK_KEY_dead_acute, 543, 605, 701, 977, 977,
-GDK_KEY_dead_circumflex, 977, 1101, 1101, 1301, 1301,
-GDK_KEY_dead_tilde, 1301, 1383, 1446, 1586, 1586,
-GDK_KEY_dead_macron, 1586, 1630, 1648, 1720, 1720,
-GDK_KEY_dead_breve, 1720, 1768, 1768, 1792, 1792,
-GDK_KEY_dead_abovedot, 1792, 1820, 1823, 1859, 1859,
-GDK_KEY_dead_diaeresis, 1859, 1945, 1957, 1981, 1981,
-GDK_KEY_dead_abovering, 1981, 1989, 1989, 1989, 1989,
-GDK_KEY_dead_doubleacute, 1989, 1997, 1997, 1997, 1997,
-GDK_KEY_dead_caron, 1997, 2037, 2037, 2045, 2045,
-GDK_KEY_dead_cedilla, 2045, 2055, 2061, 2061, 2061,
-GDK_KEY_dead_ogonek, 2061, 2069, 2069, 2069, 2069,
-GDK_KEY_dead_iota, 2069, 2089, 2188, 2620, 3280,
-GDK_KEY_dead_voiced_sound, 3280, 3326, 3326, 3326, 3326,
-GDK_KEY_dead_semivoiced_sound, 3326, 3336, 3336, 3336, 3336,
-GDK_KEY_dead_belowdot, 3336, 3352, 3352, 3368, 3368,
-GDK_KEY_dead_hook, 3368, 3446, 3449, 3505, 3505,
-GDK_KEY_dead_horn, 3505, 3515, 3515, 3515, 3515,
-GDK_KEY_dead_stroke, 3515, 3603, 3615, 3615, 3615,
-GDK_KEY_dead_psili, 3615, 3643, 3643, 3643, 3643,
-GDK_KEY_dead_dasia, 3643, 3675, 3675, 3675, 3675,
-GDK_KEY_dead_belowring, 3675, 3677, 3677, 3677, 3677,
-GDK_KEY_dead_belowtilde, 3677, 3679, 3679, 3679, 3679,
-GDK_KEY_dead_belowdiaeresis, 3679, 3679, 3682, 3682, 3682,
-GDK_KEY_dead_belowcomma, 3682, 3696, 3696, 3696, 3696,
-GDK_KEY_dead_currency, 3696, 3794, 3800, 3800, 3800,
-GDK_KEY_dead_greek, 3800, 3902, 3926, 3926, 3926,
-GDK_KEY_Multi_key, 3926, 3926, 10637, 14345, 16220,
+GDK_KEY_dead_grave, 184, 246, 333, 545, 545,
+GDK_KEY_dead_acute, 545, 609, 705, 981, 981,
+GDK_KEY_dead_circumflex, 981, 1105, 1105, 1305, 1305,
+GDK_KEY_dead_tilde, 1305, 1389, 1452, 1592, 1592,
+GDK_KEY_dead_macron, 1592, 1638, 1656, 1728, 1728,
+GDK_KEY_dead_breve, 1728, 1778, 1778, 1802, 1802,
+GDK_KEY_dead_abovedot, 1802, 1832, 1835, 1871, 1871,
+GDK_KEY_dead_diaeresis, 1871, 1959, 1971, 1995, 1995,
+GDK_KEY_dead_abovering, 1995, 2005, 2005, 2005, 2005,
+GDK_KEY_dead_doubleacute, 2005, 2015, 2015, 2015, 2015,
+GDK_KEY_dead_caron, 2015, 2057, 2057, 2065, 2065,
+GDK_KEY_dead_cedilla, 2065, 2077, 2083, 2083, 2083,
+GDK_KEY_dead_ogonek, 2083, 2093, 2093, 2093, 2093,
+GDK_KEY_dead_iota, 2093, 2115, 2214, 2646, 3306,
+GDK_KEY_dead_voiced_sound, 3306, 3352, 3352, 3352, 3352,
+GDK_KEY_dead_semivoiced_sound, 3352, 3362, 3362, 3362, 3362,
+GDK_KEY_dead_belowdot, 3362, 3378, 3378, 3394, 3394,
+GDK_KEY_dead_hook, 3394, 3472, 3475, 3531, 3531,
+GDK_KEY_dead_horn, 3531, 3541, 3541, 3541, 3541,
+GDK_KEY_dead_stroke, 3541, 3629, 3641, 3641, 3641,
+GDK_KEY_dead_psili, 3641, 3669, 3669, 3669, 3669,
+GDK_KEY_dead_dasia, 3669, 3701, 3701, 3701, 3701,
+GDK_KEY_dead_belowring, 3701, 3703, 3703, 3703, 3703,
+GDK_KEY_dead_belowtilde, 3703, 3705, 3705, 3705, 3705,
+GDK_KEY_dead_belowdiaeresis, 3705, 3705, 3708, 3708, 3708,
+GDK_KEY_dead_belowcomma, 3708, 3722, 3722, 3722, 3722,
+GDK_KEY_dead_currency, 3722, 3820, 3826, 3826, 3826,
+GDK_KEY_dead_greek, 3826, 3928, 3952, 3952, 3952,
+GDK_KEY_Multi_key, 3952, 3952, 10663, 14371, 16246,
GDK_KEY_Greek_iota, 0x0390,
GDK_KEY_Greek_upsilon, 0x03B0,
GDK_KEY_space, 0x0060,
@@ -127,6 +127,7 @@ GDK_KEY_Greek_iota, 0x1F76,
GDK_KEY_Greek_omicron, 0x1F78,
GDK_KEY_Greek_upsilon, 0x1F7A,
GDK_KEY_Greek_omega, 0x1F7C,
+GDK_KEY_dead_grave, 0x0060,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x1FD2,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x1FE2,
GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0A,
@@ -209,7 +210,7 @@ GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_E, 0x1E14,
GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_O, 0x1E50,
GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_e, 0x1E15,
GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_o, 0x1E51,
-GDK_KEY_space, 0x00B4,
+GDK_KEY_space, 0x0027,
GDK_KEY_V, 0x01D7,
GDK_KEY_v, 0x01D8,
GDK_KEY_nobreakspace, 0x0301,
@@ -240,6 +241,7 @@ GDK_KEY_Greek_iota, 0x03AF,
GDK_KEY_Greek_omicron, 0x03CC,
GDK_KEY_Greek_upsilon, 0x03CD,
GDK_KEY_Greek_omega, 0x03CE,
+GDK_KEY_dead_acute, 0x00B4,
GDK_KEY_dead_diaeresis, GDK_KEY_space, 0x0385,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x0390,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x03B0,
@@ -494,6 +496,7 @@ GDK_KEY_Greek_omega, 0x1FF6,
0x1F61, 0x1F67,
0x1F68, 0x1F6E,
0x1F69, 0x1F6F,
+GDK_KEY_dead_tilde, 0x007E,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x1FD7,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x1FE7,
GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0E,
@@ -572,6 +575,7 @@ GDK_KEY_Greek_UPSILON, 0x1FE9,
GDK_KEY_Greek_alpha, 0x1FB1,
GDK_KEY_Greek_iota, 0x1FD1,
GDK_KEY_Greek_upsilon, 0x1FE1,
+GDK_KEY_dead_macron, 0x00AF,
GDK_KEY_dead_greek, GDK_KEY_A, 0x1FB9,
GDK_KEY_dead_greek, GDK_KEY_I, 0x1FD9,
GDK_KEY_dead_greek, GDK_KEY_U, 0x1FE9,
@@ -620,6 +624,7 @@ GDK_KEY_Greek_UPSILON, 0x1FE8,
GDK_KEY_Greek_alpha, 0x1FB0,
GDK_KEY_Greek_iota, 0x1FD0,
GDK_KEY_Greek_upsilon, 0x1FE0,
+GDK_KEY_dead_breve, 0x02D8,
GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_A, 0x1EB6,
GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_a, 0x1EB7,
GDK_KEY_Multi_key, GDK_KEY_comma, GDK_KEY_E, 0x1E1C,
@@ -640,6 +645,7 @@ GDK_KEY_Amacron, 0x01E0,
GDK_KEY_Omacron, 0x0230,
GDK_KEY_amacron, 0x01E1,
GDK_KEY_omacron, 0x0231,
+GDK_KEY_dead_abovedot, 0x02D9,
GDK_KEY_dead_stroke, GDK_KEY_j, 0x025F,
GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_S, 0x1E68,
GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_s, 0x1E69,
@@ -693,6 +699,7 @@ GDK_KEY_Greek_IOTA, 0x03AA,
GDK_KEY_Greek_UPSILON, 0x03AB,
GDK_KEY_Greek_iota, 0x03CA,
GDK_KEY_Greek_upsilon, 0x03CB,
+GDK_KEY_dead_diaeresis, 0x00A8,
GDK_KEY_dead_acute, GDK_KEY_space, 0x0385,
GDK_KEY_dead_acute, GDK_KEY_Greek_iota, 0x0390,
GDK_KEY_dead_acute, GDK_KEY_Greek_upsilon, 0x03B0,
@@ -707,10 +714,12 @@ GDK_KEY_space, 0x00B0,
GDK_KEY_nobreakspace, 0x030A,
GDK_KEY_Aacute, 0x01FA,
GDK_KEY_aacute, 0x01FB,
+GDK_KEY_dead_abovering, 0x00B0,
GDK_KEY_space, 0x02DD,
GDK_KEY_nobreakspace, 0x030B,
GDK_KEY_Cyrillic_u, 0x04F3,
GDK_KEY_Cyrillic_U, 0x04F2,
+GDK_KEY_dead_doubleacute, 0x02DD,
GDK_KEY_space, 0x02C7,
GDK_KEY_parenleft, 0x208D,
GDK_KEY_parenright, 0x208E,
@@ -731,6 +740,7 @@ GDK_KEY_V, 0x01D9,
GDK_KEY_v, 0x01DA,
GDK_KEY_nobreakspace, 0x030C,
0x01F2, 0x01C5,
+GDK_KEY_dead_caron, 0x02C7,
GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D9,
GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_u, 0x01DA,
GDK_KEY_space, 0x00B8,
@@ -738,12 +748,14 @@ GDK_KEY_nobreakspace, 0x0327,
GDK_KEY_cent, 0x20B5,
GDK_KEY_Cacute, 0x1E08,
GDK_KEY_cacute, 0x1E09,
+GDK_KEY_dead_cedilla, 0x00B8,
GDK_KEY_dead_currency, GDK_KEY_C, 0x20B5,
GDK_KEY_dead_currency, GDK_KEY_c, 0x20B5,
GDK_KEY_space, 0x02DB,
GDK_KEY_nobreakspace, 0x0328,
GDK_KEY_Omacron, 0x01EC,
GDK_KEY_omacron, 0x01ED,
+GDK_KEY_dead_ogonek, 0x02DB,
GDK_KEY_space, 0x037A,
GDK_KEY_Greek_alphaaccent, 0x1FB4,
GDK_KEY_Greek_etaaccent, 0x1FC4,
@@ -754,6 +766,7 @@ GDK_KEY_Greek_OMEGA, 0x1FFC,
GDK_KEY_Greek_alpha, 0x1FB3,
GDK_KEY_Greek_eta, 0x1FC3,
GDK_KEY_Greek_omega, 0x1FF3,
+GDK_KEY_dead_iota, 0x037A,
GDK_KEY_dead_grave, GDK_KEY_Greek_alpha, 0x1FB2,
GDK_KEY_dead_grave, GDK_KEY_Greek_eta, 0x1FC2,
GDK_KEY_dead_grave, GDK_KEY_Greek_omega, 0x1FF2,
--
GitLab
From 7f4522a3f1502fe9f439fb6c0b985de38be88145 Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Thu, 1 Apr 2021 15:18:20 -0400
Subject: [PATCH 2/2] Add more compose tests
Test the sequences whose demise made people
unhappy.
---
testsuite/gtk/composetable.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/testsuite/gtk/composetable.c b/testsuite/gtk/composetable.c
index da28cda6d1..6f5f67c5a8 100644
--- a/testsuite/gtk/composetable.c
+++ b/testsuite/gtk/composetable.c
@@ -212,6 +212,7 @@ compose_table_match_compact (void)
gunichar ch;
buffer[0] = GDK_KEY_Multi_key;
+ buffer[1] = 0;
ret = gtk_compose_table_compact_check (&table, buffer, 1, &finish, &match, &ch);
g_assert_true (ret);
@@ -222,6 +223,7 @@ compose_table_match_compact (void)
buffer[0] = GDK_KEY_a;
buffer[1] = GDK_KEY_b;
buffer[2] = GDK_KEY_c;
+ buffer[3] = 0;
ret = gtk_compose_table_compact_check (&table, buffer, 3, &finish, &match, &ch);
g_assert_false (ret);
@@ -233,12 +235,33 @@ compose_table_match_compact (void)
buffer[1] = GDK_KEY_parenleft;
buffer[2] = GDK_KEY_j;
buffer[3] = GDK_KEY_parenright;
+ buffer[4] = 0;
ret = gtk_compose_table_compact_check (&table, buffer, 4, &finish, &match, &ch);
g_assert_true (ret);
g_assert_true (finish);
g_assert_true (match);
g_assert_true (ch == 0x24d9); /* CIRCLED LATIN SMALL LETTER J */
+
+ buffer[0] = GDK_KEY_dead_acute;
+ buffer[1] = GDK_KEY_space;
+ buffer[2] = 0;
+
+ ret = gtk_compose_table_compact_check (&table, buffer, 2, &finish, &match, &ch);
+ g_assert_true (ret);
+ g_assert_true (finish);
+ g_assert_true (match);
+ g_assert_true (ch == 0x27);
+
+ buffer[0] = GDK_KEY_dead_acute;
+ buffer[1] = GDK_KEY_dead_acute;
+ buffer[2] = 0;
+
+ ret = gtk_compose_table_compact_check (&table, buffer, 2, &finish, &match, &ch);
+ g_assert_true (ret);
+ g_assert_true (finish);
+ g_assert_true (match);
+ g_assert_true (ch == 0xb4);
}
static void
--
GitLab