forked from AuroraMiddleware/gtk
Emoji: Drop the shortname field from emoji.data
Match the name for Emoji completion, and display it too. 'man worker' looks a lot more natural in the UI than ':man_worker:'.
This commit is contained in:
parent
1d9d5fcf39
commit
7ef5921022
@ -24,8 +24,6 @@
|
||||
* sequence contains a 0, it marks the point
|
||||
* where skin tone modifiers should be inserted
|
||||
* s - name, e.g. "man worker"
|
||||
* s - shortname, for completion. This includes
|
||||
* colons to mark the ends, e.g. ":guardsman:"
|
||||
* as - keywords, e.g. "man", "worker"
|
||||
*/
|
||||
#include <json-glib/json-glib.h>
|
||||
@ -127,7 +125,7 @@ main (int argc, char *argv[])
|
||||
array = json_node_get_array (root);
|
||||
length = json_array_get_length (array);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(aussas)"));
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ausas)"));
|
||||
i = 0;
|
||||
while (i < length)
|
||||
{
|
||||
@ -136,7 +134,6 @@ main (int argc, char *argv[])
|
||||
GVariantBuilder b1;
|
||||
GVariantBuilder b2;
|
||||
const char *name;
|
||||
const char *shortname;
|
||||
char *code;
|
||||
int j, k;
|
||||
gboolean skip;
|
||||
@ -187,7 +184,6 @@ main (int argc, char *argv[])
|
||||
obj2 = g_hash_table_lookup (names, name_key->str);
|
||||
if (obj2)
|
||||
{
|
||||
shortname = json_object_get_string_member (obj2, "shortname");
|
||||
kw = json_object_get_array_member (obj2, "keywords");
|
||||
for (k = 0; k < json_array_get_length (kw); k++)
|
||||
{
|
||||
@ -209,12 +205,10 @@ main (int argc, char *argv[])
|
||||
g_strfreev (ascii);
|
||||
}
|
||||
}
|
||||
else
|
||||
shortname = "";
|
||||
|
||||
g_strfreev (name_tokens);
|
||||
|
||||
g_variant_builder_add (&builder, "(aussas)", &b1, name, shortname, &b2);
|
||||
g_variant_builder_add (&builder, "(ausas)", &b1, name, &b2);
|
||||
}
|
||||
|
||||
v = g_variant_builder_end (&builder);
|
||||
|
Binary file not shown.
@ -337,8 +337,8 @@ add_recent_item (GtkEmojiChooser *chooser,
|
||||
|
||||
g_variant_ref (item);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a((aussas)u)"));
|
||||
g_variant_builder_add (&builder, "(@(aussas)u)", item, modifier);
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a((ausas)u)"));
|
||||
g_variant_builder_add (&builder, "(@(ausas)u)", item, modifier);
|
||||
|
||||
children = NULL;
|
||||
for (child = gtk_widget_get_last_child (chooser->recent.box);
|
||||
@ -363,7 +363,7 @@ add_recent_item (GtkEmojiChooser *chooser,
|
||||
continue;
|
||||
}
|
||||
|
||||
g_variant_builder_add (&builder, "(@(aussas)u)", item2, modifier2);
|
||||
g_variant_builder_add (&builder, "(@(ausas)u)", item2, modifier2);
|
||||
}
|
||||
g_list_free (children);
|
||||
|
||||
@ -603,7 +603,7 @@ populate_emoji_chooser (gpointer data)
|
||||
if (!chooser->data)
|
||||
{
|
||||
GBytes *bytes = g_resources_lookup_data ("/org/gtk/libgtk/emoji/emoji.data", 0, NULL);
|
||||
chooser->data = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE ("a(aussas)"), bytes, TRUE));
|
||||
chooser->data = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE ("a(ausas)"), bytes, TRUE));
|
||||
g_bytes_unref (bytes);
|
||||
}
|
||||
|
||||
@ -765,7 +765,7 @@ filter_func (GtkFlowBoxChild *child,
|
||||
|
||||
g_variant_get_child (emoji_data, 1, "&s", &name);
|
||||
name_tokens = g_str_tokenize_and_fold (name, "en", NULL);
|
||||
g_variant_get_child (emoji_data, 3, "^a&s", &keywords);
|
||||
g_variant_get_child (emoji_data, 2, "^a&s", &keywords);
|
||||
|
||||
res = match_tokens ((const char **)term_tokens, (const char **)name_tokens) ||
|
||||
match_tokens ((const char **)term_tokens, keywords);
|
||||
|
@ -115,7 +115,7 @@ next:
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (g_unichar_isalnum (g_utf8_get_char (p)) || *p == '_');
|
||||
while (g_unichar_isalnum (g_utf8_get_char (p)) || *p == '_' || *p == ' ');
|
||||
|
||||
if (found_candidate)
|
||||
n_matches = populate_completion (completion, p, 0);
|
||||
@ -488,7 +488,7 @@ add_emoji (GtkWidget *list,
|
||||
GtkWidget *box;
|
||||
PangoAttrList *attrs;
|
||||
char text[64];
|
||||
const char *shortname;
|
||||
const char *name;
|
||||
GtkWidget *stack;
|
||||
gunichar modifier;
|
||||
|
||||
@ -515,8 +515,8 @@ add_emoji (GtkWidget *list,
|
||||
gtk_box_append (GTK_BOX (box), stack);
|
||||
g_object_set_data (G_OBJECT (child), "stack", stack);
|
||||
|
||||
g_variant_get_child (emoji_data, 2, "&s", &shortname);
|
||||
label = gtk_label_new (shortname);
|
||||
g_variant_get_child (emoji_data, 1, "&s", &name);
|
||||
label = gtk_label_new (name);
|
||||
gtk_label_set_xalign (GTK_LABEL (label), 0);
|
||||
|
||||
gtk_stack_add_named (GTK_STACK (stack), label, "text");
|
||||
@ -572,10 +572,11 @@ populate_completion (GtkEmojiCompletion *completion,
|
||||
g_variant_iter_init (&iter, completion->data);
|
||||
while ((item = g_variant_iter_next_value (&iter)))
|
||||
{
|
||||
const char *shortname;
|
||||
const char *name;
|
||||
|
||||
g_variant_get_child (item, 2, "&s", &shortname);
|
||||
if (g_str_has_prefix (shortname, text))
|
||||
g_variant_get_child (item, 1, "&s", &name);
|
||||
|
||||
if (g_str_has_prefix (name, text + 1))
|
||||
{
|
||||
n_matches++;
|
||||
|
||||
@ -623,7 +624,7 @@ gtk_emoji_completion_init (GtkEmojiCompletion *completion)
|
||||
gtk_widget_init_template (GTK_WIDGET (completion));
|
||||
|
||||
bytes = g_resources_lookup_data ("/org/gtk/libgtk/emoji/emoji.data", 0, NULL);
|
||||
completion->data = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE ("a(auss)"), bytes, TRUE));
|
||||
completion->data = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE ("a(ausas)"), bytes, TRUE));
|
||||
|
||||
g_bytes_unref (bytes);
|
||||
|
||||
|
@ -2,12 +2,12 @@
|
||||
<schemalist>
|
||||
|
||||
<schema id='org.gtk.gtk4.Settings.EmojiChooser' path='/org/gtk/gtk4/settings/emoji-chooser/'>
|
||||
<key name='recent-emoji' type='a((aussas)u)'>
|
||||
<key name='recent-emoji' type='a((ausas)u)'>
|
||||
<default>[]</default>
|
||||
<summary>Recently used Emoji</summary>
|
||||
<description>
|
||||
An array of Emoji definitions to show in the Emoji chooser. Each Emoji is
|
||||
specified as an array of codepoints, name, shortname and keywords. The extra
|
||||
specified as an array of codepoints, name and keywords. The extra
|
||||
integer after this pair is the code of the Fitzpatrick modifier to use in
|
||||
place of a 0 in the codepoint array.
|
||||
</description>
|
||||
|
Loading…
Reference in New Issue
Block a user