[gtk/fix-editable-label-spurious-focus-out: 2/2] editablelabel: Defer changes on focus-out
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/fix-editable-label-spurious-focus-out: 2/2] editablelabel: Defer changes on focus-out
- Date: Tue, 18 Oct 2022 18:25:47 +0000 (UTC)
commit 7be993b72886bc3e56e166e3cb5d6de0c8a1d0b9
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Oct 18 14:23:22 2022 -0400
editablelabel: Defer changes on focus-out
We can get spurious focus-out/-in pairs when
the editable label is in a popover that gets
a Wayland keyboard enter event as a result of
clicking the editable label.
A timeout isn't a great solution, but nothing
better is available right now.
Fixes: #4864
gtk/gtkeditablelabel.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtkeditablelabel.c b/gtk/gtkeditablelabel.c
index e107121ad9..a4690960fb 100644
--- a/gtk/gtkeditablelabel.c
+++ b/gtk/gtkeditablelabel.c
@@ -192,11 +192,23 @@ gtk_editable_label_prepare_drag (GtkDragSource *source,
gtk_label_get_label (GTK_LABEL (self->label)));
}
+static gboolean
+stop_editing_soon (gpointer data)
+{
+ GtkEventController *controller = data;
+ GtkWidget *widget = gtk_event_controller_get_widget (controller);
+
+ if (!gtk_event_controller_focus_contains_focus (GTK_EVENT_CONTROLLER_FOCUS (controller)))
+ gtk_editable_label_stop_editing (GTK_EDITABLE_LABEL (widget), TRUE);
+
+ return FALSE;
+}
+
static void
gtk_editable_label_focus_out (GtkEventController *controller,
GtkEditableLabel *self)
{
- gtk_editable_label_stop_editing (self, TRUE);
+ g_timeout_add (100, stop_editing_soon, controller);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]