From 81efb63073c4c99edd799f2742ef522b6b81a39f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 28 Sep 2024 12:19:17 -0400 Subject: [PATCH] emojichooser: insert before closing the popover Doing otherwise risks that the focus is moved back to the entry, causing everything to be selected, and then replaced by the Emoji we insert. Which is not the desired effect! --- gtk/gtkemojichooser.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/gtk/gtkemojichooser.c b/gtk/gtkemojichooser.c index 0bf47825f0..a0d624c806 100644 --- a/gtk/gtkemojichooser.c +++ b/gtk/gtkemojichooser.c @@ -436,17 +436,6 @@ emoji_activated (GtkFlowBox *box, GVariant *item; gunichar modifier; - if (should_close (chooser)) - gtk_popover_popdown (GTK_POPOVER (chooser)); - else - { - GtkWidget *popover; - - popover = gtk_widget_get_ancestor (GTK_WIDGET (box), GTK_TYPE_POPOVER); - if (popover != GTK_WIDGET (chooser)) - gtk_popover_popdown (GTK_POPOVER (popover)); - } - label = gtk_flow_box_child_get_child (child); text = g_strdup (gtk_label_get_label (GTK_LABEL (label))); @@ -457,6 +446,17 @@ emoji_activated (GtkFlowBox *box, g_signal_emit (data, signals[EMOJI_PICKED], 0, text); g_free (text); + + if (should_close (chooser)) + gtk_popover_popdown (GTK_POPOVER (chooser)); + else + { + GtkWidget *popover; + + popover = gtk_widget_get_ancestor (GTK_WIDGET (box), GTK_TYPE_POPOVER); + if (popover != GTK_WIDGET (chooser)) + gtk_popover_popdown (GTK_POPOVER (popover)); + } } static gboolean