[gtk+/wip/matthiasc/emoji-picker: 11/11] more wip
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/matthiasc/emoji-picker: 11/11] more wip
- Date: Mon, 7 Aug 2017 13:03:03 +0000 (UTC)
commit dabf36f71a6bc84f187216ef5676f3ecc5935a21
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Aug 7 07:57:19 2017 -0400
more wip
tests/gtkemojipicker.c | 1288 ++++++++++++++++++++++++++--------------------
tests/gtkemojipicker.css | 1 +
tests/gtkemojipicker.ui | 41 ++-
3 files changed, 775 insertions(+), 555 deletions(-)
---
diff --git a/tests/gtkemojipicker.c b/tests/gtkemojipicker.c
index 2ec4e68..c21f477 100644
--- a/tests/gtkemojipicker.c
+++ b/tests/gtkemojipicker.c
@@ -7,574 +7,660 @@ typedef struct {
gunichar code;
gboolean is_modifier_base;
gunichar code2;
+ const char **keywords;
} EmojiData;
-#if 0
-static gunichar people_plain[] = {
- // face-positive
- 0x1f600, 0x1f601, 0x1f602, 0x1f923, 0x1f603, 0x1f604, 0x1f605, 0x1f606, 0x1f609, 0x1f60a,
- 0x1f60b, 0x1f60e, 0x1f60d, 0x1f618, 0x1f617, 0x1f619, 0x1f61a, 0x1f642, 0x1f917, 0x1f929,
- // face-neutral
- 0x1f914, 0x1f928, 0x1f610, 0x1f611, 0x1f636, 0x1f644, 0x1f60f, 0x1f623, 0x1f625, 0x1f62e,
- 0x1f910, 0x1f62f, 0x1f62a, 0x1f62b, 0x1f634, 0x1f60c, 0x1f61b, 0x1f61c, 0x1f61d, 0x1f924,
- 0x1f612, 0x1f613, 0x1f614, 0x1f615, 0x1f643, 0x1f911, 0x1f632,
- //face-negative
- 0x02639, 0x1f641, 0x1f616, 0x1f61e, 0x1f61f, 0x1f624, 0x1f622, 0x1f62d, 0x1f626, 0x1f627,
- 0x1f628, 0x1f629, 0x1f92f, 0x1f62c, 0x1f630, 0x1f631, 0x1f633, 0x1f92a, 0x1f635, 0x1f621,
- 0x1f620, 0x1f92c,
- // face-sick
- 0x1f637, 0x1f912, 0x1f915, 0x1f922, 0x1f92e, 0x1f927,
- // face-role
- 0x1f607, 0x1f920, 0x1f921, 0x1f925, 0x1f92b, 0x1f92d, 0x1f9d0, 0x1f913,
- // face-fantasy
- 0x1f608, 0x1f47f, 0x1f479, 0x1f47a, 0x1f480, 0x02620, 0x1f47b, 0x1f47d, 0x1f47e, 0x1f916,
- 0x1f4a9,
- // cat-face
- 0x1f63a, 0x1f638, 0x1f63b, 0x1f63c, 0x1f63d, 0x1f640, 0x1f63f, 0x1f63e,
- // monkey-face
- 0x1f648, 0x1f649, 0x1f64a
-};
-
-static gunichar people_skin[] = {
- // person
- 0x1f476, 0x1f9d2, 0x1f466, 0x1f467, 0x1f9d1, 0x1f468, 0x1f469, 0x1f9d3, 0x1f474, 0x1f475,
- // person-role
- //{ 0x1f468, 1, 0x02695 },
- //{ 0x1f469, 1, 0x02695 },
- //{ 0x1f468, 1, 0x1f393 },
- //{ 0x1f469, 1, 0x1f393 },
- //{ 0x1f468, 1, 0x1f3eb },
- //{ 0x1f469, 1, 0x1f3eb },
- //{ 0x1f468, 1, 0x02696 },
- //{ 0x1f469, 1, 0x02696 },
- //{ 0x1f468, 1, 0x1f33e },
- //{ 0x1f469, 1, 0x1f33e },
- //{ 0x1f468, 1, 0x1f373 },
- //{ 0x1f469, 1, 0x1f373 },
- //{ 0x1f468, 1, 0x1f527 },
- //{ 0x1f469, 1, 0x1f527 },
- //{ 0x1f468, 1, 0x1f3ed },
- //{ 0x1f469, 1, 0x1f3ed },
- //{ 0x1f468, 1, 0x1f4bc },
- //{ 0x1f469, 1, 0x1f4bc },
- //{ 0x1f468, 1, 0x1f52c },
- //{ 0x1f469, 1, 0x1f52c },
- //{ 0x1f468, 1, 0x1f4bb },
- //{ 0x1f469, 1, 0x1f4bb },
- //{ 0x1f468, 1, 0x1f3a4 },
- //{ 0x1f469, 1, 0x1f3a4 },
- //{ 0x1f468, 1, 0x1f3a8 },
- //{ 0x1f469, 1, 0x1f3a8 },
- //{ 0x1f468, 1, 0x02708 },
- //{ 0x1f469, 1, 0x02708 },
- //{ 0x1f468, 1, 0x1f680 },
- //{ 0x1f469, 1, 0x1f680 },
- //{ 0x1f468, 1, 0x1f692 },
- //{ 0x1f469, 1, 0x1f692 },
- 0x1f46e,
- //{ 0x1f46e, 1, 0x2642 },
- //{ 0x1f46e, 1, 0x2640 },
- 0x1f575,
- //{ 0x1f575, 1, 0x2642 },
- //{ 0x1f575, 1, 0x2640 },
- 0x1f482,
- //{ 0x1f482, 1, 0x2642 },
- //{ 0x1f482, 1, 0x2640 },
- 0x1f477,
- //{ 0x1f477, 1, 0x2642 },
- //{ 0x1f477, 1, 0x2640 },
- 0x1f934,
- //{ 0x1f934, 1, 0x2642 },
- //{ 0x1f934, 1, 0x2640 },
- 0x1f478,
- //{ 0x1f478, 1, 0x2642 },
- //{ 0x1f478, 1, 0x2640 },
- 0x1f473,
- //{ 0x1f473, 1, 0x2642 },
- //{ 0x1f473, 1, 0x2640 },
- 0x1f472,
- 0x1f9d5,
- 0x1f9d4,
- 0x1f471,
- //{ 0x1f471, 1, 0x2642 },
- //{ 0x1f471, 1, 0x2640 },
- 0x1f935,
- 0x1f470,
- 0x1f930,
- 0x1f931,
- // person-fantasy
- 0x1f47c,
- 0x1f385,
- 0x1f936,
- 0x1f9d9,
- //{ 0x1f9d9, 1, 0x2642 },
- //{ 0x1f9d9, 1, 0x2640 },
- //...
- // person-gesture
- 0x1f64d,
- //{ 0x1f64d, 1, 0x2642 },
- //{ 0x1f64d, 1, 0x2640 },
- 0x1f64e,
- //{ 0x1f64e, 1, 0x2642 },
- //{ 0x1f64e, 1, 0x2640 },
- 0x1f645,
- //{ 0x1f645, 1, 0x2642 },
- //{ 0x1f645, 1, 0x2640 },
- 0x1f646,
- //{ 0x1f646, 1, 0x2642 },
- //{ 0x1f646, 1, 0x2640 },
- 0x1f481,
- //{ 0x1f481, 1, 0x2642 },
- //{ 0x1f481, 1, 0x2640 },
- 0x1f64b,
- //{ 0x1f64b, 1, 0x2642 },
- //{ 0x1f64b, 1, 0x2640 },
- 0x1f647,
- //{ 0x1f647, 1, 0x2642 },
- //{ 0x1f647, 1, 0x2640 },
- 0x1f926,
- //{ 0x1f926, 1, 0x2642 },
- //{ 0x1f926, 1, 0x2640 },
- 0x1f937,
- //{ 0x1f937, 1, 0x2642 },
- //{ 0x1f937, 1, 0x2640 },
- // person-activity
- 0x1f486,
- //{ 0x1f486, 1, 0x2642 },
- //{ 0x1f486, 1, 0x2640 },
- 0x1f487,
- //{ 0x1f487, 1, 0x2642 },
- //{ 0x1f487, 1, 0x2640 },
- 0x1f6b6,
- //{ 0x1f6b6, 1, 0x2642 },
- //{ 0x1f6b6, 1, 0x2640 },
- 0x1f3c3,
- //{ 0x1f3c3, 1, 0x2642 },
- //{ 0x1f3c3, 1, 0x2640 },
- 0x1f483,
- 0x1f57a,
- 0x1f46f,
- //{ 0x1f46f, 1, 0x2642 },
- //{ 0x1f46f, 1, 0x2640 },
- //...
- // person-sport
- // family
- // body
- // emotion
- // clothing
-};
-#endif
-
static EmojiData people[] = {
// face-positive
- { 0x1f600, 0, 0 },
- { 0x1f601, 0, 0 },
- { 0x1f602, 0, 0 },
- { 0x1f923, 0, 0 },
- { 0x1f603, 0, 0 },
- { 0x1f604, 0, 0 },
- { 0x1f605, 0, 0 },
- { 0x1f606, 0, 0 },
- { 0x1f609, 0, 0 },
- { 0x1f60a, 0, 0 },
- { 0x1f60b, 0, 0 },
- { 0x1f60e, 0, 0 },
- { 0x1f60d, 0, 0 },
- { 0x1f618, 0, 0 },
- { 0x1f617, 0, 0 },
- { 0x1f619, 0, 0 },
- { 0x1f61a, 0, 0 },
- { 0x1f642, 0, 0 },
- { 0x1f917, 0, 0 },
- { 0x1f929, 0, 0 },
+ { 0x1f600, 0, 0, (const char *[]) { "face", "grin", NULL } },
+ { 0x1f601, 0, 0, (const char *[]) { "eye", "face", "grin", "smile", NULL } },
+ { 0x1f602, 0, 0, (const char *[]) { "face", "joy", "laugh", "tear", NULL } },
+ { 0x1f923, 0, 0, (const char *[]) { "face", "floor", "laugh", "rolling", NULL } },
+ { 0x1f603, 0, 0, (const char *[]) { "face", "mouth", "open", "smiling", NULL } },
+ { 0x1f604, 0, 0, (const char *[]) { "eye", "face", "mouth", "open", "smile", NULL } },
+ { 0x1f605, 0, 0, (const char *[]) { "cold", "face", "open", "smile", "sweat", NULL } },
+ { 0x1f606, 0, 0, (const char *[]) { "face", "laugh", "mouth", "open", "satisfied", "smile", NULL } },
+ { 0x1f609, 0, 0, (const char *[]) { "face", "wink", NULL } },
+ { 0x1f60a, 0, 0, (const char *[]) { "blush", "eye", "face", "smile", NULL } },
+ { 0x1f60b, 0, 0, (const char *[]) { "delicious", "face", "savouring", "smile", "yum", NULL } },
+ { 0x1f60e, 0, 0, (const char *[]) { "bright", "cool", "eye", "eyewear", "face", "glasses", "smile", "sun",
"sunglasses", NULL } },
+ { 0x1f60d, 0, 0, (const char *[]) { NULL } },
+ { 0x1f618, 0, 0, (const char *[]) { NULL } },
+ { 0x1f617, 0, 0, (const char *[]) { NULL } },
+ { 0x1f619, 0, 0, (const char *[]) { NULL } },
+ { 0x1f61a, 0, 0, (const char *[]) { NULL } },
+ { 0x1f642, 0, 0, (const char *[]) { NULL } },
+ { 0x1f917, 0, 0, (const char *[]) { NULL } },
+ { 0x1f929, 0, 0, (const char *[]) { NULL } },
// face-neutral
- { 0x1f914, 0, 0 },
- { 0x1f928, 0, 0 },
- { 0x1f610, 0, 0 },
- { 0x1f611, 0, 0 },
- { 0x1f636, 0, 0 },
- { 0x1f644, 0, 0 },
- { 0x1f60f, 0, 0 },
- { 0x1f623, 0, 0 },
- { 0x1f625, 0, 0 },
- { 0x1f62e, 0, 0 },
- { 0x1f910, 0, 0 },
- { 0x1f62f, 0, 0 },
- { 0x1f62a, 0, 0 },
- { 0x1f62b, 0, 0 },
- { 0x1f634, 0, 0 },
- { 0x1f60c, 0, 0 },
- { 0x1f61b, 0, 0 },
- { 0x1f61c, 0, 0 },
- { 0x1f61d, 0, 0 },
- { 0x1f924, 0, 0 },
- { 0x1f612, 0, 0 },
- { 0x1f613, 0, 0 },
- { 0x1f614, 0, 0 },
- { 0x1f615, 0, 0 },
- { 0x1f643, 0, 0 },
- { 0x1f911, 0, 0 },
- { 0x1f632, 0, 0 },
+ { 0x1f914, 0, 0, NULL },
+ { 0x1f928, 0, 0, NULL },
+ { 0x1f610, 0, 0, NULL },
+ { 0x1f611, 0, 0, NULL },
+ { 0x1f636, 0, 0, NULL },
+ { 0x1f644, 0, 0, NULL },
+ { 0x1f60f, 0, 0, NULL },
+ { 0x1f623, 0, 0, NULL },
+ { 0x1f625, 0, 0, NULL },
+ { 0x1f62e, 0, 0, NULL },
+ { 0x1f910, 0, 0, NULL },
+ { 0x1f62f, 0, 0, NULL },
+ { 0x1f62a, 0, 0, NULL },
+ { 0x1f62b, 0, 0, NULL },
+ { 0x1f634, 0, 0, NULL },
+ { 0x1f60c, 0, 0, NULL },
+ { 0x1f61b, 0, 0, NULL },
+ { 0x1f61c, 0, 0, NULL },
+ { 0x1f61d, 0, 0, NULL },
+ { 0x1f924, 0, 0, NULL },
+ { 0x1f612, 0, 0, NULL },
+ { 0x1f613, 0, 0, NULL },
+ { 0x1f614, 0, 0, NULL },
+ { 0x1f615, 0, 0, NULL },
+ { 0x1f643, 0, 0, NULL },
+ { 0x1f911, 0, 0, NULL },
+ { 0x1f632, 0, 0, NULL },
//face-negative
- { 0x02639, 0, 0 },
- { 0x1f641, 0, 0 },
- { 0x1f616, 0, 0 },
- { 0x1f61e, 0, 0 },
- { 0x1f61f, 0, 0 },
- { 0x1f624, 0, 0 },
- { 0x1f622, 0, 0 },
- { 0x1f62d, 0, 0 },
- { 0x1f626, 0, 0 },
- { 0x1f627, 0, 0 },
- { 0x1f628, 0, 0 },
- { 0x1f629, 0, 0 },
- { 0x1f92f, 0, 0 },
- { 0x1f62c, 0, 0 },
- { 0x1f630, 0, 0 },
- { 0x1f631, 0, 0 },
- { 0x1f633, 0, 0 },
- { 0x1f92a, 0, 0 },
- { 0x1f635, 0, 0 },
- { 0x1f621, 0, 0 },
- { 0x1f620, 0, 0 },
- { 0x1f92c, 0, 0 },
+ { 0x02639, 0, 0, NULL },
+ { 0x1f641, 0, 0, NULL },
+ { 0x1f616, 0, 0, NULL },
+ { 0x1f61e, 0, 0, NULL },
+ { 0x1f61f, 0, 0, NULL },
+ { 0x1f624, 0, 0, NULL },
+ { 0x1f622, 0, 0, NULL },
+ { 0x1f62d, 0, 0, NULL },
+ { 0x1f626, 0, 0, NULL },
+ { 0x1f627, 0, 0, NULL },
+ { 0x1f628, 0, 0, NULL },
+ { 0x1f629, 0, 0, NULL },
+ { 0x1f92f, 0, 0, NULL },
+ { 0x1f62c, 0, 0, NULL },
+ { 0x1f630, 0, 0, NULL },
+ { 0x1f631, 0, 0, NULL },
+ { 0x1f633, 0, 0, NULL },
+ { 0x1f92a, 0, 0, NULL },
+ { 0x1f635, 0, 0, NULL },
+ { 0x1f621, 0, 0, NULL },
+ { 0x1f620, 0, 0, NULL },
+ { 0x1f92c, 0, 0, NULL },
// face-sick
- { 0x1f637, 0, 0 },
- { 0x1f912, 0, 0 },
- { 0x1f915, 0, 0 },
- { 0x1f922, 0, 0 },
- { 0x1f92e, 0, 0 },
- { 0x1f927, 0, 0 },
+ { 0x1f637, 0, 0, NULL },
+ { 0x1f912, 0, 0, NULL },
+ { 0x1f915, 0, 0, NULL },
+ { 0x1f922, 0, 0, NULL },
+ { 0x1f92e, 0, 0, NULL },
+ { 0x1f927, 0, 0, NULL },
// face-role
- { 0x1f607, 0, 0 },
- { 0x1f920, 0, 0 },
- { 0x1f921, 0, 0 },
- { 0x1f925, 0, 0 },
- { 0x1f92b, 0, 0 },
- { 0x1f92d, 0, 0 },
- { 0x1f9d0, 0, 0 },
- { 0x1f913, 0, 0 },
+ { 0x1f607, 0, 0, NULL },
+ { 0x1f920, 0, 0, NULL },
+ { 0x1f921, 0, 0, NULL },
+ { 0x1f925, 0, 0, NULL },
+ { 0x1f92b, 0, 0, NULL },
+ { 0x1f92d, 0, 0, NULL },
+ { 0x1f9d0, 0, 0, NULL },
+ { 0x1f913, 0, 0, NULL },
// face-fantasy
- { 0x1f608, 0, 0 },
- { 0x1f47f, 0, 0 },
- { 0x1f479, 0, 0 },
- { 0x1f47a, 0, 0 },
- { 0x1f480, 0, 0 },
- { 0x02620, 0, 0 },
- { 0x1f47b, 0, 0 },
- { 0x1f47d, 0, 0 },
- { 0x1f47e, 0, 0 },
- { 0x1f916, 0, 0 },
- { 0x1f4a9, 0, 0 },
+ { 0x1f608, 0, 0, NULL },
+ { 0x1f47f, 0, 0, NULL },
+ { 0x1f479, 0, 0, NULL },
+ { 0x1f47a, 0, 0, NULL },
+ { 0x1f480, 0, 0, NULL },
+ { 0x02620, 0, 0, NULL },
+ { 0x1f47b, 0, 0, NULL },
+ { 0x1f47d, 0, 0, NULL },
+ { 0x1f47e, 0, 0, NULL },
+ { 0x1f916, 0, 0, NULL },
+ { 0x1f4a9, 0, 0, NULL },
// cat-face
- { 0x1f63a, 0, 0 },
- { 0x1f638, 0, 0 },
- { 0x1f63b, 0, 0 },
- { 0x1f63c, 0, 0 },
- { 0x1f63d, 0, 0 },
- { 0x1f640, 0, 0 },
- { 0x1f63f, 0, 0 },
- { 0x1f63e, 0, 0 },
+ { 0x1f63a, 0, 0, NULL },
+ { 0x1f638, 0, 0, NULL },
+ { 0x1f63b, 0, 0, NULL },
+ { 0x1f63c, 0, 0, NULL },
+ { 0x1f63d, 0, 0, NULL },
+ { 0x1f640, 0, 0, NULL },
+ { 0x1f63f, 0, 0, NULL },
+ { 0x1f63e, 0, 0, NULL },
// monkey-face
- { 0x1f648, 0, 0 },
- { 0x1f649, 0, 0 },
- { 0x1f64a, 0, 0 },
+ { 0x1f648, 0, 0, NULL },
+ { 0x1f649, 0, 0, NULL },
+ { 0x1f64a, 0, 0, NULL },
// person
- { 0x1f476, 1, 0 },
- //{ 0x1f9d2, 1, 0 },
- { 0x1f466, 1, 0 },
- { 0x1f467, 1, 0 },
- //{ 0x1f9d1, 1, 0 },
- { 0x1f468, 1, 0 },
- { 0x1f469, 1, 0 },
- //{ 0x1f9d3, 1, 0 },
- { 0x1f474, 1, 0 },
- { 0x1f475, 1, 0 },
+ { 0x1f476, 1, 0, NULL },
+ { 0x1f9d2, 1, 0, NULL },
+ { 0x1f466, 1, 0, NULL },
+ { 0x1f467, 1, 0, NULL },
+ { 0x1f9d1, 1, 0, NULL },
+ { 0x1f468, 1, 0, NULL },
+ { 0x1f469, 1, 0, NULL },
+ { 0x1f9d3, 1, 0, NULL },
+ { 0x1f474, 1, 0, NULL },
+ { 0x1f475, 1, 0, NULL },
// person-role
- //{ 0x1f468, 1, 0x02695 },
- //{ 0x1f469, 1, 0x02695 },
- //{ 0x1f468, 1, 0x1f393 },
- //{ 0x1f469, 1, 0x1f393 },
- //{ 0x1f468, 1, 0x1f3eb },
- //{ 0x1f469, 1, 0x1f3eb },
- //{ 0x1f468, 1, 0x02696 },
- //{ 0x1f469, 1, 0x02696 },
- //{ 0x1f468, 1, 0x1f33e },
- //{ 0x1f469, 1, 0x1f33e },
- //{ 0x1f468, 1, 0x1f373 },
- //{ 0x1f469, 1, 0x1f373 },
- //{ 0x1f468, 1, 0x1f527 },
- //{ 0x1f469, 1, 0x1f527 },
- //{ 0x1f468, 1, 0x1f3ed },
- //{ 0x1f469, 1, 0x1f3ed },
- //{ 0x1f468, 1, 0x1f4bc },
- //{ 0x1f469, 1, 0x1f4bc },
- //{ 0x1f468, 1, 0x1f52c },
- //{ 0x1f469, 1, 0x1f52c },
- //{ 0x1f468, 1, 0x1f4bb },
- //{ 0x1f469, 1, 0x1f4bb },
- //{ 0x1f468, 1, 0x1f3a4 },
- //{ 0x1f469, 1, 0x1f3a4 },
- //{ 0x1f468, 1, 0x1f3a8 },
- //{ 0x1f469, 1, 0x1f3a8 },
- //{ 0x1f468, 1, 0x02708 },
- //{ 0x1f469, 1, 0x02708 },
- //{ 0x1f468, 1, 0x1f680 },
- //{ 0x1f469, 1, 0x1f680 },
- //{ 0x1f468, 1, 0x1f692 },
- //{ 0x1f469, 1, 0x1f692 },
- { 0x1f46e, 1, 0 },
- //{ 0x1f46e, 1, 0x2642 },
- //{ 0x1f46e, 1, 0x2640 },
- { 0x1f575, 1, 0 },
- //{ 0x1f575, 1, 0x2642 },
- //{ 0x1f575, 1, 0x2640 },
- { 0x1f482, 1, 0 },
- //{ 0x1f482, 1, 0x2642 },
- //{ 0x1f482, 1, 0x2640 },
- { 0x1f477, 1, 0 },
- //{ 0x1f477, 1, 0x2642 },
- //{ 0x1f477, 1, 0x2640 },
- { 0x1f934, 1, 0 },
- //{ 0x1f934, 1, 0x2642 },
- //{ 0x1f934, 1, 0x2640 },
- { 0x1f478, 1, 0 },
- //{ 0x1f478, 1, 0x2642 },
- //{ 0x1f478, 1, 0x2640 },
- { 0x1f473, 1, 0 },
- //{ 0x1f473, 1, 0x2642 },
- //{ 0x1f473, 1, 0x2640 },
- { 0x1f472, 1, 0 },
- { 0x1f9d5, 1, 0 },
- { 0x1f9d4, 1, 0 },
- { 0x1f471, 1, 0 },
- //{ 0x1f471, 1, 0x2642 },
- //{ 0x1f471, 1, 0x2640 },
- { 0x1f935, 1, 0 },
- { 0x1f470, 1, 0 },
- { 0x1f930, 1, 0 },
- { 0x1f931, 1, 0 },
+ { 0x1f468, 1, 0x02695, NULL },
+ { 0x1f469, 1, 0x02695, NULL },
+ { 0x1f468, 1, 0x1f393, NULL },
+ { 0x1f469, 1, 0x1f393, NULL },
+ { 0x1f468, 1, 0x1f3eb, NULL },
+ { 0x1f469, 1, 0x1f3eb, NULL },
+ { 0x1f468, 1, 0x02696, NULL },
+ { 0x1f469, 1, 0x02696, NULL },
+ { 0x1f468, 1, 0x1f33e, NULL },
+ { 0x1f469, 1, 0x1f33e, NULL },
+ { 0x1f468, 1, 0x1f373, NULL },
+ { 0x1f469, 1, 0x1f373, NULL },
+ { 0x1f468, 1, 0x1f527, NULL },
+ { 0x1f469, 1, 0x1f527, NULL },
+ { 0x1f468, 1, 0x1f3ed, NULL },
+ { 0x1f469, 1, 0x1f3ed, NULL },
+ { 0x1f468, 1, 0x1f4bc, NULL },
+ { 0x1f469, 1, 0x1f4bc, NULL },
+ { 0x1f468, 1, 0x1f52c, NULL },
+ { 0x1f469, 1, 0x1f52c, NULL },
+ { 0x1f468, 1, 0x1f4bb, NULL },
+ { 0x1f469, 1, 0x1f4bb, NULL },
+ { 0x1f468, 1, 0x1f3a4, NULL },
+ { 0x1f469, 1, 0x1f3a4, NULL },
+ { 0x1f468, 1, 0x1f3a8, NULL },
+ { 0x1f469, 1, 0x1f3a8 , NULL},
+ { 0x1f468, 1, 0x02708, NULL },
+ { 0x1f469, 1, 0x02708, NULL },
+ { 0x1f468, 1, 0x1f680, NULL },
+ { 0x1f469, 1, 0x1f680, NULL },
+ { 0x1f468, 1, 0x1f692, NULL },
+ { 0x1f469, 1, 0x1f692, NULL },
+ { 0x1f46e, 1, 0, NULL },
+ { 0x1f46e, 1, 0x2642, NULL },
+ { 0x1f46e, 1, 0x2640, NULL },
+ { 0x1f575, 1, 0, NULL },
+ { 0x1f575, 1, 0x2642, NULL },
+ { 0x1f575, 1, 0x2640, NULL },
+ { 0x1f482, 1, 0, NULL },
+ { 0x1f482, 1, 0x2642, NULL },
+ { 0x1f482, 1, 0x2640, NULL },
+ { 0x1f477, 1, 0, NULL },
+ { 0x1f477, 1, 0x2642, NULL },
+ { 0x1f477, 1, 0x2640, NULL },
+ { 0x1f934, 1, 0, NULL },
+ { 0x1f478, 1, 0, NULL },
+ { 0x1f473, 1, 0, NULL },
+ { 0x1f473, 1, 0x2642, NULL },
+ { 0x1f473, 1, 0x2640, NULL },
+ { 0x1f472, 1, 0, NULL },
+ { 0x1f9d5, 1, 0, NULL },
+ { 0x1f9d4, 1, 0, NULL },
+ { 0x1f471, 1, 0, NULL },
+ { 0x1f471, 1, 0x2642, NULL },
+ { 0x1f471, 1, 0x2640, NULL },
+ { 0x1f935, 1, 0, NULL },
+ { 0x1f470, 1, 0, NULL },
+ { 0x1f930, 1, 0, NULL },
+ { 0x1f931, 1, 0, NULL },
// person-fantasy
- { 0x1f47c, 1, 0 },
- { 0x1f385, 1, 0 },
- { 0x1f936, 1, 0 },
- { 0x1f9d9, 1, 0 },
- //{ 0x1f9d9, 1, 0x2642 },
- //{ 0x1f9d9, 1, 0x2640 },
- //...
+ { 0x1f47c, 1, 0, NULL },
+ { 0x1f385, 1, 0, NULL },
+ { 0x1f936, 1, 0, NULL },
+ { 0x1f9d9, 1, 0, NULL },
+ { 0x1f9d9, 1, 0x2642, NULL },
+ { 0x1f9d9, 1, 0x2640, NULL },
+ { 0x1f9da, 1, 0, NULL },
+ { 0x1f9da, 1, 0x2642, NULL },
+ { 0x1f9da, 1, 0x2640, NULL },
+ { 0x1f9db, 1, 0, NULL },
+ { 0x1f9db, 1, 0x2642, NULL },
+ { 0x1f9db, 1, 0x2640, NULL },
+ { 0x1f9dc, 1, 0, NULL },
+ { 0x1f9dc, 1, 0x2642, NULL },
+ { 0x1f9dc, 1, 0x2640, NULL },
+ { 0x1f9dd, 1, 0, NULL },
+ { 0x1f9dd, 1, 0x2642, NULL },
+ { 0x1f9dd, 1, 0x2640, NULL },
+ { 0x1f9de, 0, 0, NULL },
+ { 0x1f9de, 0, 0x2642, NULL },
+ { 0x1f9de, 0, 0x2640, NULL },
+ { 0x1f9df, 0, 0, NULL },
+ { 0x1f9df, 0, 0x2642, NULL },
+ { 0x1f9df, 0, 0x2640, NULL },
// person-gesture
- { 0x1f64d, 1, 0 },
- //{ 0x1f64d, 1, 0x2642 },
- //{ 0x1f64d, 1, 0x2640 },
- { 0x1f64e, 1, 0 },
- //{ 0x1f64e, 1, 0x2642 },
- //{ 0x1f64e, 1, 0x2640 },
- { 0x1f645, 1, 0 },
- //{ 0x1f645, 1, 0x2642 },
- //{ 0x1f645, 1, 0x2640 },
- { 0x1f646, 1, 0 },
- //{ 0x1f646, 1, 0x2642 },
- //{ 0x1f646, 1, 0x2640 },
- { 0x1f481, 1, 0 },
- //{ 0x1f481, 1, 0x2642 },
- //{ 0x1f481, 1, 0x2640 },
- { 0x1f64b, 1, 0 },
- //{ 0x1f64b, 1, 0x2642 },
- //{ 0x1f64b, 1, 0x2640 },
- { 0x1f647, 1, 0 },
- //{ 0x1f647, 1, 0x2642 },
- //{ 0x1f647, 1, 0x2640 },
- { 0x1f926, 1, 0 },
- //{ 0x1f926, 1, 0x2642 },
- //{ 0x1f926, 1, 0x2640 },
- { 0x1f937, 1, 0 },
- //{ 0x1f937, 1, 0x2642 },
- //{ 0x1f937, 1, 0x2640 },
+ { 0x1f64d, 1, 0, NULL },
+ { 0x1f64d, 1, 0x2642, NULL },
+ { 0x1f64d, 1, 0x2640, NULL },
+ { 0x1f64e, 1, 0, NULL },
+ { 0x1f64e, 1, 0x2642, NULL },
+ { 0x1f64e, 1, 0x2640, NULL },
+ { 0x1f645, 1, 0, NULL },
+ { 0x1f645, 1, 0x2642, NULL },
+ { 0x1f645, 1, 0x2640, NULL },
+ { 0x1f646, 1, 0, NULL },
+ { 0x1f646, 1, 0x2642, NULL },
+ { 0x1f646, 1, 0x2640, NULL },
+ { 0x1f481, 1, 0, NULL },
+ { 0x1f481, 1, 0x2642, NULL },
+ { 0x1f481, 1, 0x2640, NULL },
+ { 0x1f64b, 1, 0, NULL },
+ { 0x1f64b, 1, 0x2642, NULL },
+ { 0x1f64b, 1, 0x2640, NULL },
+ { 0x1f647, 1, 0, NULL },
+ { 0x1f647, 1, 0x2642, NULL },
+ { 0x1f647, 1, 0x2640, NULL },
+ { 0x1f926, 1, 0, NULL },
+ { 0x1f926, 1, 0x2642, NULL },
+ { 0x1f926, 1, 0x2640, NULL },
+ { 0x1f937, 1, 0, NULL },
+ { 0x1f937, 1, 0x2642, NULL },
+ { 0x1f937, 1, 0x2640, NULL },
// person-activity
- { 0x1f486, 1, 0 },
- //{ 0x1f486, 1, 0x2642 },
- //{ 0x1f486, 1, 0x2640 },
- { 0x1f487, 1, 0 },
- //{ 0x1f487, 1, 0x2642 },
- //{ 0x1f487, 1, 0x2640 },
- { 0x1f6b6, 1, 0 },
- //{ 0x1f6b6, 1, 0x2642 },
- //{ 0x1f6b6, 1, 0x2640 },
- { 0x1f3c3, 1, 0 },
- //{ 0x1f3c3, 1, 0x2642 },
- //{ 0x1f3c3, 1, 0x2640 },
- { 0x1f483, 1, 0 },
- { 0x1f57a, 1, 0 },
- { 0x1f46f, 1, 0 },
- //{ 0x1f46f, 1, 0x2642 },
- //{ 0x1f46f, 1, 0x2640 },
- { 0x1f9d6, 1, 0 },
- //{ 0x1f9d6, 1, 0x2642 },
- //{ 0x1f9d6, 1, 0x2640 },
- { 0x1f9d7, 1, 0 },
- //{ 0x1f9d7, 1, 0x2642 },
- //{ 0x1f9d7, 1, 0x2640 },
- { 0x1f9d8, 1, 0 },
- //{ 0x1f9d8, 1, 0x2642 },
- //{ 0x1f9d8, 1, 0x2640 },
- { 0x1f6c0, 1, 0 },
- { 0x1f6cc, 1, 0 },
- { 0x1f574, 1, 0 },
- { 0x1f5e3, 0, 0 },
- { 0x1f464, 0, 0 },
- { 0x1f465, 0, 0 },
+ { 0x1f486, 1, 0, NULL },
+ { 0x1f486, 1, 0x2642, NULL },
+ { 0x1f486, 1, 0x2640, NULL },
+ { 0x1f487, 1, 0, NULL },
+ { 0x1f487, 1, 0x2642, NULL },
+ { 0x1f487, 1, 0x2640, NULL },
+ { 0x1f6b6, 1, 0, NULL },
+ { 0x1f6b6, 1, 0x2642, NULL },
+ { 0x1f6b6, 1, 0x2640, NULL },
+ { 0x1f3c3, 1, 0, NULL },
+ { 0x1f3c3, 1, 0x2642, NULL },
+ { 0x1f3c3, 1, 0x2640, NULL },
+ { 0x1f483, 1, 0, NULL },
+ { 0x1f57a, 1, 0, NULL },
+ { 0x1f46f, 1, 0, NULL },
+ { 0x1f46f, 1, 0x2642, NULL },
+ { 0x1f46f, 1, 0x2640, NULL },
+ { 0x1f9d6, 1, 0, NULL },
+ { 0x1f9d6, 1, 0x2642, NULL },
+ { 0x1f9d6, 1, 0x2640, NULL },
+ { 0x1f9d7, 1, 0, NULL },
+ { 0x1f9d7, 1, 0x2642, NULL },
+ { 0x1f9d7, 1, 0x2640, NULL },
+ { 0x1f9d8, 1, 0, NULL },
+ { 0x1f9d8, 1, 0x2642, NULL },
+ { 0x1f9d8, 1, 0x2640, NULL },
+ { 0x1f6c0, 1, 0, NULL },
+ { 0x1f6cc, 1, 0, NULL },
+ { 0x1f574, 1, 0, NULL },
+ { 0x1f5e3, 0, 0, NULL },
+ { 0x1f464, 0, 0, NULL },
+ { 0x1f465, 0, 0, NULL },
// person-sport
- { 0x1f93a, 0, 0 },
- { 0x1f3c7, 1, 0 },
- { 0x026f7, 0, 0 },
- { 0x1f3c2, 1, 0 },
- { 0x1f3cc, 1, 0 },
- //{ 0x1f3cc, 1, 0x2642 },
- //{ 0x1f3cc, 1, 0x2640 },
- { 0x1f3c4, 1, 0 },
- //{ 0x1f3c4, 1, 0x2642 },
- //{ 0x1f3c4, 1, 0x2640 },
- { 0x1f6a3, 1, 0 },
- //{ 0x1f6a3, 1, 0x2642 },
- //{ 0x1f6a3, 1, 0x2640 },
- { 0x1f3ca, 1, 0 },
- //{ 0x1f3ca, 1, 0x2642 },
- //{ 0x1f3ca, 1, 0x2640 },
- { 0x026f9, 1, 0 },
- //{ 0x026f9, 1, 0x2642 },
- //{ 0x026f9, 1, 0x2640 },
- { 0x1f3cb, 1, 0 },
- //{ 0x1f3cb, 1, 0x2642 },
- //{ 0x1f3cb, 1, 0x2640 },
- { 0x1f6b4, 1, 0 },
- //{ 0x1f6b4, 1, 0x2642 },
- //{ 0x1f6b4, 1, 0x2640 },
-
+ { 0x1f93a, 0, 0, NULL },
+ { 0x1f3c7, 1, 0, NULL },
+ { 0x026f7, 0, 0, NULL },
+ { 0x1f3c2, 1, 0, NULL },
+ { 0x1f3cc, 1, 0, NULL },
+ { 0x1f3cc, 1, 0x2642, NULL },
+ { 0x1f3cc, 1, 0x2640, NULL },
+ { 0x1f3c4, 1, 0, NULL },
+ { 0x1f3c4, 1, 0x2642, NULL },
+ { 0x1f3c4, 1, 0x2640, NULL },
+ { 0x1f6a3, 1, 0, NULL },
+ { 0x1f6a3, 1, 0x2642, NULL },
+ { 0x1f6a3, 1, 0x2640, NULL },
+ { 0x1f3ca, 1, 0, NULL },
+ { 0x1f3ca, 1, 0x2642, NULL },
+ { 0x1f3ca, 1, 0x2640, NULL },
+ { 0x026f9, 1, 0, NULL },
+ { 0x026f9, 1, 0x2642, NULL },
+ { 0x026f9, 1, 0x2640, NULL },
+ { 0x1f3cb, 1, 0, NULL },
+ { 0x1f3cb, 1, 0x2642, NULL },
+ { 0x1f3cb, 1, 0x2640, NULL },
+
+ { 0x1f6b4, 1, 0, NULL },
+ { 0x1f6b4, 1, 0x2642, NULL },
+ { 0x1f6b4, 1, 0x2640, NULL },
+ { 0x1f6b5, 1, 0, NULL },
+ { 0x1f6b5, 1, 0x2642, NULL },
+ { 0x1f6b5, 1, 0x2640, NULL },
+ { 0x1f3ce, 0, 0, NULL },
+ { 0x1f3cd, 0, 0, NULL },
+ { 0x1f938, 1, 0, NULL },
+ { 0x1f938, 1, 0x2642, NULL },
+ { 0x1f938, 1, 0x2640, NULL },
+ { 0x1f93c, 0, 0, NULL },
+ { 0x1f93c, 0, 0x2642, NULL },
+ { 0x1f93c, 0, 0x2640, NULL },
+ { 0x1f93d, 1, 0, NULL },
+ { 0x1f93d, 1, 0x2642, NULL },
+ { 0x1f93d, 1, 0x2640, NULL },
+ { 0x1f93e, 1, 0, NULL },
+ { 0x1f93e, 1, 0x2642, NULL },
+ { 0x1f93e, 1, 0x2640, NULL },
+ { 0x1f939, 1, 0, NULL },
+ { 0x1f939, 1, 0x2642, NULL },
+ { 0x1f939, 1, 0x2640, NULL },
// family
+ { 0x1f46b, 0, 0, NULL },
+ { 0x1f46c, 0, 0, NULL },
+ { 0x1f46d, 0, 0, NULL },
+ { 0x1f48f, 0, 0, NULL },
+ // 0x1f469 0x200d 0x274 0xfe0f 0x200d 0x1f48b 0x200d 0x1f468
+ // 0x1f468 0x200d 0x274 0xfe0f 0x200d 0x1f48b 0x200d 0x1f468
+ // 0x1f469 0x200d 0x274 0xfe0f 0x200d 0x1f48b 0x200d 0x1f469
+ { 0x1f491, 0, 0, NULL },
+ // 3 long sequences omitted
+ { 0x1f46a, 0, 0, NULL },
+ // 15 long sequences omitted
+ { 0x1f468, 0, 0x1f466, NULL },
+ // 1 long sequence omitted
+ { 0x1f468, 0, 0x1f467, NULL },
+ // 1 long sequence omitted
+ { 0x1f469, 0, 0x1f466, NULL },
+ // 1 long sequence omitted
+ { 0x1f469, 0, 0x1f467, NULL },
+ // 2 long sequences omitted
// body
+ { 0x1f933, 1, 0, NULL },
+ { 0x1f4aa, 1, 0, NULL },
+ { 0x1f448, 1, 0, NULL },
+ { 0x1f449, 1, 0, NULL },
+ { 0x0261d, 1, 0, NULL },
+ { 0x1f446, 1, 0, NULL },
+ { 0x1f595, 1, 0, NULL },
+ { 0x1f447, 1, 0, NULL },
+ { 0x0270c, 1, 0, NULL },
+ { 0x1f91e, 1, 0, NULL },
+ { 0x1f596, 1, 0, NULL },
+ { 0x1f918, 1, 0, NULL },
+ { 0x1f919, 1, 0, NULL },
+ { 0x1f590, 1, 0, NULL },
+ { 0x0270b, 1, 0, NULL },
+ { 0x1f44c, 1, 0, NULL },
+ { 0x1f44d, 1, 0, NULL },
+ { 0x1f44e, 1, 0, NULL },
+ { 0x0270a, 1, 0, NULL },
+ { 0x1f44a, 1, 0, NULL },
+ { 0x1f91b, 1, 0, NULL },
+ { 0x1f91c, 1, 0, NULL },
+ { 0x1f91a, 1, 0, NULL },
+ { 0x1f44b, 1, 0, NULL },
+ { 0x1f91f, 1, 0, NULL },
+ { 0x0270d, 1, 0, NULL },
+ { 0x1f44f, 1, 0, NULL },
+ { 0x1f450, 1, 0, NULL },
+ { 0x1f64c, 1, 0, NULL },
+ { 0x1f932, 1, 0, NULL },
+ { 0x1f64f, 1, 0, NULL },
+ { 0x1f91d, 0, 0, NULL },
+ { 0x1f485, 1, 0, NULL },
+ { 0x1f442, 1, 0, NULL },
+ { 0x1f443, 1, 0, NULL },
+ { 0x1f463, 0, 0, NULL },
+ { 0x1f440, 0, 0, NULL },
+ { 0x1f441, 0, 0, NULL },
+ // 1 long sequence omitted
+ { 0x1f9e0, 0, 0, NULL },
+ { 0x1f445, 0, 0, NULL },
+ { 0x1f444, 0, 0, NULL },
// emotion
+ { 0x1f48b, 0, 0, NULL },
+ { 0x1f498, 0, 0, NULL },
+ { 0x02764, 0, 0, NULL },
+ { 0x1f493, 0, 0, NULL },
+ { 0x1f494, 0, 0, NULL },
+ { 0x1f495, 0, 0, NULL },
+ { 0x1f496, 0, 0, NULL },
+ { 0x1f497, 0, 0, NULL },
+ { 0x1f499, 0, 0, NULL },
+ { 0x1f49a, 0, 0, NULL },
+ { 0x1f498, 0, 0, NULL },
+ { 0x1f9e1, 0, 0, NULL },
+ { 0x1f49c, 0, 0, NULL },
+ { 0x1f5a4, 0, 0, NULL },
+ { 0x1f49d, 0, 0, NULL },
+ { 0x1f49e, 0, 0, NULL },
+ { 0x1f49f, 0, 0, NULL },
+ { 0x02763, 0, 0, NULL },
+ { 0x1f48c, 0, 0, NULL },
+ { 0x1f4a4, 0, 0, NULL },
+ { 0x1f4a2, 0, 0, NULL },
+ { 0x1f4a3, 0, 0, NULL },
+ { 0x1f4a5, 0, 0, NULL },
+ { 0x1f4a6, 0, 0, NULL },
+ { 0x1f4a8, 0, 0, NULL },
+ { 0x1f4ab, 0, 0, NULL },
+ { 0x1f4ac, 0, 0, NULL },
+ { 0x1f5e8, 0, 0, NULL },
+ { 0x1f5ef, 0, 0, NULL },
+ { 0x1f4ad, 0, 0, NULL },
+ { 0x1f573, 0, 0, NULL },
// clothing
+ { 0x1f453, 0, 0, NULL },
+ { 0x1f576, 0, 0, NULL },
+ { 0x1f454, 0, 0, NULL },
+ { 0x1f455, 0, 0, NULL },
+ { 0x1f456, 0, 0, NULL },
+ { 0x1f9e3, 0, 0, NULL },
+ { 0x1f9e4, 0, 0, NULL },
+ { 0x1f9e5, 0, 0, NULL },
+ { 0x1f9e6, 0, 0, NULL },
+ { 0x1f457, 0, 0, NULL },
+ { 0x1f458, 0, 0, NULL },
+ { 0x1f459, 0, 0, NULL },
+ { 0x1f45a, 0, 0, NULL },
+ { 0x1f45b, 0, 0, NULL },
+ { 0x1f45c, 0, 0, NULL },
+ { 0x1f45d, 0, 0, NULL },
+ { 0x1f6cd, 0, 0, NULL },
+ { 0x1f392, 0, 0, NULL },
+ { 0x1f45e, 0, 0, NULL },
+ { 0x1f45f, 0, 0, NULL },
+ { 0x1f460, 0, 0, NULL },
+ { 0x1f461, 0, 0, NULL },
+ { 0x1f462, 0, 0, NULL },
+ { 0x1f451, 0, 0, NULL },
+ { 0x1f452, 0, 0, NULL },
+ { 0x1f3a9, 0, 0, NULL },
+ { 0x1f393, 0, 0, NULL },
+ { 0x1f9e2, 0, 0, NULL },
+ { 0x026d1, 0, 0, NULL },
+ { 0x1f4ff, 0, 0, NULL },
+ { 0x1f484, 0, 0, NULL },
+ { 0x1f48d, 0, 0, NULL },
+ { 0x1f48e, 0, 0, NULL },
};
static EmojiData nature[] = {
// animal-mammal
- { 0x1f435, 0, 0 },
- { 0x1f412, 0, 0 },
- { 0x1f980, 0, 0 },
- { 0x1f436, 0, 0 },
- { 0x1f415, 0, 0 },
- { 0x1f429, 0, 0 },
- { 0x1f43A, 0, 0 },
- { 0x1f98A, 0, 0 },
- { 0x1f431, 0, 0 },
- { 0x1f408, 0, 0 },
- { 0x1f981, 0, 0 },
- { 0x1f42f, 0, 0 },
- { 0x1f405, 0, 0 },
- { 0x1f406, 0, 0 },
- { 0x1f434, 0, 0 },
- { 0x1f984, 0, 0 },
- { 0x1f993, 0, 0 },
- { 0x1f989, 0, 0 },
- { 0x1f42e, 0, 0 },
- { 0x1f402, 0, 0 },
- { 0x1f403, 0, 0 },
- { 0x1f437, 0, 0 },
- { 0x1f416, 0, 0 },
- { 0x1f417, 0, 0 },
- { 0x1f43d, 0, 0 },
- { 0x1f40f, 0, 0 },
- { 0x1f411, 0, 0 },
- { 0x1f410, 0, 0 },
- { 0x1f42a, 0, 0 },
- { 0x1f42b, 0, 0 },
- { 0x1f992, 0, 0 },
- { 0x1f418, 0, 0 },
- { 0x1f98f, 0, 0 },
- { 0x1f42d, 0, 0 },
- { 0x1f401, 0, 0 },
- { 0x1f400, 0, 0 },
- { 0x1f439, 0, 0 },
- { 0x1f430, 0, 0 },
- { 0x1f407, 0, 0 },
- { 0x1f43f, 0, 0 },
- { 0x1f994, 0, 0 },
- { 0x1f987, 0, 0 },
- { 0x1f438, 0, 0 },
- { 0x1f428, 0, 0 },
- { 0x1f43c, 0, 0 },
- { 0x1f43e, 0, 0 },
+ { 0x1f435, 0, 0, NULL },
+ { 0x1f412, 0, 0, NULL },
+ { 0x1f980, 0, 0, NULL },
+ { 0x1f436, 0, 0, NULL },
+ { 0x1f415, 0, 0, NULL },
+ { 0x1f429, 0, 0, NULL },
+ { 0x1f43A, 0, 0, NULL },
+ { 0x1f98A, 0, 0, NULL },
+ { 0x1f431, 0, 0, NULL },
+ { 0x1f408, 0, 0, NULL },
+ { 0x1f981, 0, 0, NULL },
+ { 0x1f42f, 0, 0, NULL },
+ { 0x1f405, 0, 0, NULL },
+ { 0x1f406, 0, 0, NULL },
+ { 0x1f434, 0, 0, NULL },
+ { 0x1f984, 0, 0, NULL },
+ { 0x1f993, 0, 0, NULL },
+ { 0x1f989, 0, 0, NULL },
+ { 0x1f42e, 0, 0, NULL },
+ { 0x1f402, 0, 0, NULL },
+ { 0x1f403, 0, 0, NULL },
+ { 0x1f437, 0, 0, NULL },
+ { 0x1f416, 0, 0, NULL },
+ { 0x1f417, 0, 0, NULL },
+ { 0x1f43d, 0, 0, NULL },
+ { 0x1f40f, 0, 0, NULL },
+ { 0x1f411, 0, 0, NULL },
+ { 0x1f410, 0, 0, NULL },
+ { 0x1f42a, 0, 0, NULL },
+ { 0x1f42b, 0, 0, NULL },
+ { 0x1f992, 0, 0, NULL },
+ { 0x1f418, 0, 0, NULL },
+ { 0x1f98f, 0, 0, NULL },
+ { 0x1f42d, 0, 0, NULL },
+ { 0x1f401, 0, 0, NULL },
+ { 0x1f400, 0, 0, NULL },
+ { 0x1f439, 0, 0, NULL },
+ { 0x1f430, 0, 0, NULL },
+ { 0x1f407, 0, 0, NULL },
+ { 0x1f43f, 0, 0, NULL },
+ { 0x1f994, 0, 0, NULL },
+ { 0x1f987, 0, 0, NULL },
+ { 0x1f438, 0, 0, NULL },
+ { 0x1f428, 0, 0, NULL },
+ { 0x1f43c, 0, 0, NULL },
+ { 0x1f43e, 0, 0, NULL },
// animal-bird
- { 0x1f983, 0, 0 },
- { 0x1f414, 0, 0 },
- { 0x1f413, 0, 0 },
- { 0x1f423, 0, 0 },
- { 0x1f424, 0, 0 },
- { 0x1f425, 0, 0 },
- { 0x1f426, 0, 0 },
- { 0x1f427, 0, 0 },
- { 0x1f54a, 0, 0 },
- { 0x1f985, 0, 0 },
- { 0x1f986, 0, 0 },
- { 0x1f989, 0, 0 },
+ { 0x1f983, 0, 0, NULL },
+ { 0x1f414, 0, 0, NULL },
+ { 0x1f413, 0, 0, NULL },
+ { 0x1f423, 0, 0, NULL },
+ { 0x1f424, 0, 0, NULL },
+ { 0x1f425, 0, 0, NULL },
+ { 0x1f426, 0, 0, NULL },
+ { 0x1f427, 0, 0, NULL },
+ { 0x1f54a, 0, 0, NULL },
+ { 0x1f985, 0, 0, NULL },
+ { 0x1f986, 0, 0, NULL },
+ { 0x1f989, 0, 0, NULL },
// animal-amphibian
- { 0x1f438, 0, 0 },
+ { 0x1f438, 0, 0, NULL },
// animal-reptile
- { 0x1f40a, 0, 0 },
- { 0x1f422, 0, 0 },
- { 0x1f98e, 0, 0 },
- { 0x1f40d, 0, 0 },
- { 0x1f432, 0, 0 },
- { 0x1f409, 0, 0 },
- { 0x1f995, 0, 0 },
- { 0x1f996, 0, 0 },
+ { 0x1f40a, 0, 0, NULL },
+ { 0x1f422, 0, 0, NULL },
+ { 0x1f98e, 0, 0, NULL },
+ { 0x1f40d, 0, 0, NULL },
+ { 0x1f432, 0, 0, NULL },
+ { 0x1f409, 0, 0, NULL },
+ { 0x1f995, 0, 0, NULL },
+ { 0x1f996, 0, 0, NULL },
// animal-marine
+ { 0x1f433, 0, 0, NULL },
+ { 0x1f40b, 0, 0, NULL },
+ { 0x1f42c, 0, 0, NULL },
+ { 0x1f41f, 0, 0, NULL },
+ { 0x1f420, 0, 0, NULL },
+ { 0x1f421, 0, 0, NULL },
+ { 0x1f988, 0, 0, NULL },
+ { 0x1f419, 0, 0, NULL },
+ { 0x1f41a, 0, 0, NULL },
+ { 0x1f980, 0, 0, NULL },
+ { 0x1f990, 0, 0, NULL },
+ { 0x1f991, 0, 0, NULL },
// animal-bug
+ { 0x1f40c, 0, 0, NULL },
+ { 0x1f98b, 0, 0, NULL },
+ { 0x1f41b, 0, 0, NULL },
+ { 0x1f41c, 0, 0, NULL },
+ { 0x1f41d, 0, 0, NULL },
+ { 0x1f41e, 0, 0, NULL },
+ { 0x1f997, 0, 0, NULL },
+ { 0x1f577, 0, 0, NULL },
+ { 0x1f578, 0, 0, NULL },
+ { 0x1f982, 0, 0, NULL },
// plant-flower
+ { 0x1f490, 0, 0, NULL },
+ { 0x1f338, 0, 0, NULL },
+ { 0x1f4ae, 0, 0, NULL },
+ { 0x1f3f5, 0, 0, NULL },
+ { 0x1f339, 0, 0, NULL },
+ { 0x1f940, 0, 0, NULL },
+ { 0x1f33a, 0, 0, NULL },
+ { 0x1f33b, 0, 0, NULL },
+ { 0x1f33c, 0, 0, NULL },
+ { 0x1f337, 0, 0, NULL },
// plant-other
+ { 0x1f331, 0, 0, NULL },
+ { 0x1f332, 0, 0, NULL },
+ { 0x1f333, 0, 0, NULL },
+ { 0x1f334, 0, 0, NULL },
+ { 0x1f335, 0, 0, NULL },
+ { 0x1f33e, 0, 0, NULL },
+ { 0x1f33f, 0, 0, NULL },
+ { 0x02618, 0, 0, NULL },
+ { 0x1f340, 0, 0, NULL },
+ { 0x1f343, 0, 0 }
};
static EmojiData food[] = {
// food-fruit
- { 0x1f347, 0, 0 },
- { 0x1f348, 0, 0 },
- { 0x1f349, 0, 0 },
- { 0x1f34a, 0, 0 },
- { 0x1f34b, 0, 0 },
- { 0x1f34c, 0, 0 },
- { 0x1f34d, 0, 0 },
- { 0x1f34e, 0, 0 },
- { 0x1f34f, 0, 0 },
- { 0x1f350, 0, 0 },
- { 0x1f351, 0, 0 },
- { 0x1f352, 0, 0 },
- { 0x1f353, 0, 0 },
- { 0x1f95d, 0, 0 },
- { 0x1f345, 0, 0 },
- { 0x1f965, 0, 0 },
+ { 0x1f347, 0, 0, NULL },
+ { 0x1f348, 0, 0, NULL },
+ { 0x1f349, 0, 0, NULL },
+ { 0x1f34a, 0, 0, NULL },
+ { 0x1f34b, 0, 0, NULL },
+ { 0x1f34c, 0, 0, NULL },
+ { 0x1f34d, 0, 0, NULL },
+ { 0x1f34e, 0, 0, NULL },
+ { 0x1f34f, 0, 0, NULL },
+ { 0x1f350, 0, 0, NULL },
+ { 0x1f351, 0, 0, NULL },
+ { 0x1f352, 0, 0, NULL },
+ { 0x1f353, 0, 0, NULL },
+ { 0x1f95d, 0, 0, NULL },
+ { 0x1f345, 0, 0, NULL },
+ { 0x1f965, 0, 0, NULL },
// food-vegetable
+ { 0x1f951, 0, 0, NULL },
+ { 0x1f346, 0, 0, NULL },
+ { 0x1f954, 0, 0, NULL },
+ { 0x1f955, 0, 0, NULL },
+ { 0x1f33d, 0, 0, NULL },
+ { 0x1f336, 0, 0, NULL },
+ { 0x1f952, 0, 0, NULL },
+ { 0x1f966, 0, 0, NULL },
+ { 0x1f344, 0, 0, NULL },
+ { 0x1f95c, 0, 0, NULL },
+ { 0x1f330, 0, 0, NULL },
// food-prepared
+ { 0x1f35e, 0, 0, NULL },
+ { 0x1f950, 0, 0, NULL },
+ { 0x1f956, 0, 0, NULL },
+ { 0x1f968, 0, 0, NULL },
+ { 0x1f95e, 0, 0, NULL },
+ { 0x1f9c0, 0, 0, NULL },
+ { 0x1f356, 0, 0, NULL },
+ { 0x1f357, 0, 0, NULL },
+ { 0x1f969, 0, 0, NULL },
+ { 0x1f953, 0, 0, NULL },
+ { 0x1f354, 0, 0, NULL },
+ { 0x1f35f, 0, 0, NULL },
+ { 0x1f32d, 0, 0, NULL },
+ { 0x1f96a, 0, 0, NULL },
+ { 0x1f32e, 0, 0, NULL },
+ { 0x1f32f, 0, 0, NULL },
+ { 0x1f959, 0, 0, NULL },
+ { 0x1f95a, 0, 0, NULL },
+ { 0x1f373, 0, 0, NULL },
+ { 0x1f958, 0, 0, NULL },
+ { 0x1f372, 0, 0, NULL },
+ { 0x1f963, 0, 0, NULL },
+ { 0x1f957, 0, 0, NULL },
+ { 0x1f96b, 0, 0, NULL },
// food-asian
// food-sweet
// drink
// dishware
- { 0x1f962, 0, 0 },
- { 0x1f37d, 0, 0 },
- { 0x1f374, 0, 0 },
- { 0x1f944, 0, 0 },
- { 0x1f52a, 0, 0 },
- { 0x1f3f, 0, 0 },
+ { 0x1f962, 0, 0, NULL },
+ { 0x1f37d, 0, 0, NULL },
+ { 0x1f374, 0, 0, NULL },
+ { 0x1f944, 0, 0, NULL },
+ { 0x1f52a, 0, 0, NULL },
+ { 0x1f3f, 0, 0, NULL },
};
static EmojiData travel[] = {
// place-map
- { 0x1f3f, 0, 0 },
+ { 0x1f30d, 0, 0, NULL },
// place-geographic
+ { 0x1f3d4, 0, 0, NULL },
// place building
+ { 0x1f3df, 0, 0, NULL },
// place-religious
+ { 0x026ea, 0, 0, NULL },
// place-other
+ { 0x026f2, 0, 0, NULL },
// transport-ground
+ { 0x1f682, 0, 0, NULL },
// transport-water
+ { 0x02693, 0, 0, NULL },
// transport-air
// hotel
// time
@@ -582,20 +668,62 @@ static EmojiData travel[] = {
};
static EmojiData activities[] = {
+ // event
+ { 0x1f383, 0, 0, NULL },
+ // award-medal
+ { 0x1f396, 0, 0, NULL },
+ // sport
+ { 0x026bd, 0, 0, NULL },
+ // game
+ { 0x1f3ae, 0, 0, NULL },
};
static EmojiData objects[] = {
+ // sound
+ { 0x1f507, 0, 0, NULL },
+ // music
+ { 0x1f3bc, 0, 0, NULL },
+ // musical-instrument
+ { 0x1f3b7, 0, 0, NULL },
+ // phone
+ // computer
+ // light & video
+ // book-paper
+ // money
+ // mail
+ // writing
+ // office
+ // lock
+ // tool
+ // medical
+ // other-object
};
static EmojiData symbols[] = {
+ // transport-sign
+ // warning
+ // arrow
+ // religion
+ // zodiac
+ // av-symbol
+ // other-symbol
+ // keycap
+ // alphanum
+ // geometric
};
+static EmojiData flags[] = {
+ // flag
+ // country-flag
+ // subdivision-flag
+};
struct _GtkEmojiPicker
{
GtkPopover parent_instance;
GtkWidget *scrolled_window;
+ GtkWidget *search_entry;
GtkWidget *people_box;
GtkWidget *people_heading;
@@ -632,6 +760,11 @@ struct _GtkEmojiPicker
GtkWidget *symbols_button;
GtkWidget *symbols_label;
+ GtkWidget *flags_box;
+ GtkWidget *flags_heading;
+ GtkWidget *flags_button;
+ GtkWidget *flags_label;
+
GtkWidget *scroll_to_button;
GtkGesture *people_press;
@@ -676,6 +809,8 @@ scroll_in_idle (gpointer data)
heading = picker->objects_heading;
else if (picker->scroll_to_button == picker->symbols_button)
heading = picker->symbols_heading;
+ else if (picker->scroll_to_button == picker->flags_button)
+ heading = picker->flags_heading;
else
return G_SOURCE_REMOVE;
@@ -719,11 +854,7 @@ emoji_activated (GtkFlowBox *box,
}
static void
-add_emoji (GtkWidget *box,
- gunichar code,
- gunichar modifier,
- gboolean is_modifier_base,
- gunichar code2);
+add_emoji (GtkWidget *box, EmojiData *emoji, gunichar modifier);
static void
people_pressed_cb (GtkGesture *gesture,
@@ -736,20 +867,16 @@ people_pressed_cb (GtkGesture *gesture,
GtkWidget *popover;
GtkWidget *view;
GtkWidget *box;
- gunichar code;
+ EmojiData *emoji_data;
gunichar modifier;
- gunichar code2;
- gboolean is_modifier_base;
GtkWidget *parent_popover;
child = GTK_WIDGET (gtk_flow_box_get_child_at_pos (GTK_FLOW_BOX (picker->people_box), x, y));
if (!child)
return;
- code = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (child), "code"));
- code2 = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (child), "code2"));
- is_modifier_base = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (child), "is-modifier-base"));
- if (!is_modifier_base)
+ emoji_data = (EmojiData*) g_object_get_data (G_OBJECT (child), "emoji-data");
+ if (!emoji_data->is_modifier_base)
return;
parent_popover = gtk_widget_get_ancestor (child, GTK_TYPE_POPOVER);
@@ -767,20 +894,17 @@ people_pressed_cb (GtkGesture *gesture,
g_signal_connect (box, "child-activated", G_CALLBACK (emoji_activated), parent_popover);
- add_emoji (box, code, 0, FALSE, code2);
- for (modifier = 0x1f3fb; modifier <= 0x1f3ff; modifier++) {
- add_emoji (box, code, modifier, FALSE, code2);
- }
+ add_emoji (box, emoji_data, 0);
+ for (modifier = 0x1f3fb; modifier <= 0x1f3ff; modifier++)
+ add_emoji (box, emoji_data, modifier);
gtk_popover_popup (GTK_POPOVER (popover));
}
static void
add_emoji (GtkWidget *box,
- gunichar code,
- gunichar modifier,
- gboolean is_modifier_base,
- gunichar code2)
+ EmojiData *data,
+ gunichar modifier)
{
GtkWidget *child;
GtkWidget *label;
@@ -788,13 +912,12 @@ add_emoji (GtkWidget *box,
char text[32];
char *p = text;
- p += g_unichar_to_utf8 (code, p);
+ p += g_unichar_to_utf8 (data->code, p);
if (modifier != 0)
p += g_unichar_to_utf8 (modifier, p);
- if (code2 != 0) {
+ if (data->code2 != 0) {
p += g_unichar_to_utf8 (0x200d, p);
- p += g_unichar_to_utf8 (code2, p);
- p += g_unichar_to_utf8 (0xfe0f, p);
+ p += g_unichar_to_utf8 (data->code2, p);
}
p[0] = 0;
@@ -807,9 +930,7 @@ add_emoji (GtkWidget *box,
child = gtk_flow_box_child_new ();
gtk_style_context_add_class (gtk_widget_get_style_context (child), "emojicell");
- g_object_set_data (G_OBJECT (child), "code", GUINT_TO_POINTER (code));
- g_object_set_data (G_OBJECT (child), "code2", GUINT_TO_POINTER (code2));
- g_object_set_data (G_OBJECT (child), "is-modifier-base", GINT_TO_POINTER (is_modifier_base));
+ g_object_set_data (G_OBJECT (child), "emoji-data", data);
gtk_container_add (GTK_CONTAINER (child), label);
gtk_container_add (GTK_CONTAINER (box), child);
@@ -834,23 +955,26 @@ populate_emoji_picker (GtkEmojiPicker *picker)
int i;
for (i = 0; i < G_N_ELEMENTS (people); i++)
- add_emoji (picker->people_box, people[i].code, 0, people[i].is_modifier_base,
people[i].code2);
+ add_emoji (picker->people_box, &people[i], 0);
for (i = 0; i < G_N_ELEMENTS (nature); i++)
- add_emoji (picker->nature_box, nature[i].code, 0, nature[i].is_modifier_base,
nature[i].code2);
+ add_emoji (picker->nature_box, &nature[i], 0);
for (i = 0; i < G_N_ELEMENTS (food); i++)
- add_emoji (picker->food_box, food[i].code, 0, food[i].is_modifier_base, food[i].code2);
+ add_emoji (picker->food_box, &food[i], 0);
for (i = 0; i < G_N_ELEMENTS (travel); i++)
- add_emoji (picker->travel_box, travel[i].code, 0, travel[i].is_modifier_base,
travel[i].code2);
+ add_emoji (picker->travel_box, &travel[i], 0);
for (i = 0; i < G_N_ELEMENTS (activities); i++)
- add_emoji (picker->activities_box, activities[i].code, 0, activities[i].is_modifier_base,
activities[i].code2);
+ add_emoji (picker->activities_box, &activities[i], 0);
for (i = 0; i < G_N_ELEMENTS (objects); i++)
- add_emoji (picker->objects_box, objects[i].code, 0, objects[i].is_modifier_base,
objects[i].code2);
+ add_emoji (picker->objects_box, &objects[i], 0);
for (i = 0; i < G_N_ELEMENTS (symbols); i++)
- add_emoji (picker->symbols_box, symbols[i].code, 0, symbols[i].is_modifier_base,
symbols[i].code2);
+ add_emoji (picker->symbols_box, &symbols[i], 0);
+
+ for (i = 0; i < G_N_ELEMENTS (flags); i++)
+ add_emoji (picker->flags_box, &flags[i], 0);
set_label (picker->people_label, 0x1f642);
set_label (picker->nature_label, 0x1f337);
@@ -859,6 +983,7 @@ populate_emoji_picker (GtkEmojiPicker *picker)
set_label (picker->activities_label, 0x1f3c3);
set_label (picker->objects_label, 0x1f514);
set_label (picker->symbols_label, 0x2764);
+ set_label (picker->flags_label, 0x1f3f4);
}
static void
@@ -882,6 +1007,44 @@ adj_value_changed (GtkAdjustment *adj, gpointer data)
update_state (picker->people_heading, picker->people_button, value);
update_state (picker->nature_heading, picker->nature_button, value);
update_state (picker->food_heading, picker->food_button, value);
+ update_state (picker->travel_heading, picker->travel_button, value);
+ update_state (picker->activities_heading, picker->activities_button, value);
+ update_state (picker->objects_heading, picker->objects_button, value);
+ update_state (picker->symbols_heading, picker->symbols_button, value);
+ update_state (picker->flags_heading, picker->flags_button, value);
+}
+
+static gboolean
+filter_func (GtkFlowBoxChild *child, gpointer data)
+{
+ GtkEmojiPicker *picker = data;
+ EmojiData *emoji_data;
+ const char *text;
+ int i;
+
+ text = gtk_entry_get_text (GTK_ENTRY (picker->search_entry));
+ emoji_data = (EmojiData*) g_object_get_data (G_OBJECT (child), "emoji-data");
+
+ if (text[0] == 0 || text[1] == 0)
+ return TRUE;
+
+ if (!emoji_data->keywords)
+ return FALSE;
+
+ for (i = 0; emoji_data->keywords[i]; i++) {
+ if (g_str_has_prefix (emoji_data->keywords[i], text))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void
+search_changed (GtkEntry *entry, gpointer data)
+{
+ GtkEmojiPicker *picker = data;
+
+ gtk_flow_box_invalidate_filter (GTK_FLOW_BOX (picker->people_box));
}
static void
@@ -906,6 +1069,24 @@ gtk_emoji_picker_init (GtkEmojiPicker *picker)
adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (picker->scrolled_window));
g_signal_connect (adj, "value-changed", G_CALLBACK (adj_value_changed), picker);
+
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (picker->people_box), adj);
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (picker->nature_box), adj);
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (picker->food_box), adj);
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (picker->travel_box), adj);
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (picker->activities_box), adj);
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (picker->objects_box), adj);
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (picker->symbols_box), adj);
+ gtk_container_set_focus_vadjustment (GTK_CONTAINER (picker->flags_box), adj);
+
+ gtk_flow_box_set_filter_func (GTK_FLOW_BOX (picker->people_box), filter_func, picker, NULL);
+ gtk_flow_box_set_filter_func (GTK_FLOW_BOX (picker->nature_box), filter_func, picker, NULL);
+ gtk_flow_box_set_filter_func (GTK_FLOW_BOX (picker->food_box), filter_func, picker, NULL);
+ gtk_flow_box_set_filter_func (GTK_FLOW_BOX (picker->travel_box), filter_func, picker, NULL);
+ gtk_flow_box_set_filter_func (GTK_FLOW_BOX (picker->activities_box), filter_func, picker, NULL);
+ gtk_flow_box_set_filter_func (GTK_FLOW_BOX (picker->objects_box), filter_func, picker, NULL);
+ gtk_flow_box_set_filter_func (GTK_FLOW_BOX (picker->symbols_box), filter_func, picker, NULL);
+ gtk_flow_box_set_filter_func (GTK_FLOW_BOX (picker->flags_box), filter_func, picker, NULL);
}
static void
@@ -933,6 +1114,7 @@ gtk_emoji_picker_class_init (GtkEmojiPickerClass *klass)
g_mapped_file_unref (mf);
gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, scrolled_window);
+ gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, search_entry);
gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, people_box);
gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, people_heading);
@@ -969,8 +1151,14 @@ gtk_emoji_picker_class_init (GtkEmojiPickerClass *klass)
gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, symbols_button);
gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, symbols_label);
+ gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, flags_box);
+ gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, flags_heading);
+ gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, flags_button);
+ gtk_widget_class_bind_template_child (widget_class, GtkEmojiPicker, flags_label);
+
gtk_widget_class_bind_template_callback (widget_class, emoji_activated);
gtk_widget_class_bind_template_callback (widget_class, scroll_to_section);
+ gtk_widget_class_bind_template_callback (widget_class, search_changed);
}
GtkWidget *
diff --git a/tests/gtkemojipicker.css b/tests/gtkemojipicker.css
index 02dca71..403f41c 100644
--- a/tests/gtkemojipicker.css
+++ b/tests/gtkemojipicker.css
@@ -1,3 +1,4 @@
.emojicell:hover {
background: lightgray;
+ border-radius: 6px;
}
diff --git a/tests/gtkemojipicker.ui b/tests/gtkemojipicker.ui
index 921f849..973c8ce 100644
--- a/tests/gtkemojipicker.ui
+++ b/tests/gtkemojipicker.ui
@@ -8,7 +8,7 @@
<property name="orientation">vertical</property>
<child>
<object class="GtkSearchEntry" id="search_entry">
- <property name="visible">0</property>
+ <signal name="search-changed" handler="search_changed"/>
</object>
</child>
<child>
@@ -26,7 +26,7 @@
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="people_heading">
- <property name="label" translatable="yes">People</property>
+ <property name="label" translatable="yes">Smileys & People</property>
<property name="xalign">0</property>
</object>
</child>
@@ -42,7 +42,7 @@
</child>
<child>
<object class="GtkLabel" id="nature_heading">
- <property name="label" translatable="yes">Nature</property>
+ <property name="label" translatable="yes">Animals & Nature</property>
<property name="xalign">0</property>
</object>
</child>
@@ -60,7 +60,7 @@
</child>
<child>
<object class="GtkLabel" id="food_heading">
- <property name="label" translatable="yes">Food</property>
+ <property name="label" translatable="yes">Food & Drink</property>
<property name="xalign">0</property>
</object>
</child>
@@ -78,7 +78,7 @@
</child>
<child>
<object class="GtkLabel" id="travel_heading">
- <property name="label" translatable="yes">Travel</property>
+ <property name="label" translatable="yes">Travel & Places</property>
<property name="xalign">0</property>
</object>
</child>
@@ -148,6 +148,24 @@
<signal name="child-activated" handler="emoji_activated"/>
</object>
</child>
+ <child>
+ <object class="GtkLabel" id="flags_heading">
+ <property name="label" translatable="yes">Flags</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBox" id="flags_box">
+ <property name="homogeneous">1</property>
+ <property name="selection-mode">none</property>
+ <property name="row-spacing">6</property>
+ <property name="column-spacing">6</property>
+ <property name="min-children-per-line">6</property>
+ <property name="max-children-per-line">6</property>
+ <property name="activate-on-single-click">1</property>
+ <signal name="child-activated" handler="emoji_activated"/>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -246,6 +264,19 @@
</child>
</object>
</child>
+ <child>
+ <object class="GtkButton" id="flags_button">
+ <property name="relief">none</property>
+ <signal name="clicked" handler="scroll_to_section"/>
+ <style>
+ <class name="emojisection"/>
+ </style>
+ <child>
+ <object class="GtkLabel" id="flags_label">
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]