gtkimcontextwayland: Save context even when text_input isn't around yet
authorGuido Günther <agx@sigxcpu.org>
Tue, 18 Jan 2022 13:22:24 +0000 (14:22 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 19 Jan 2022 10:20:46 +0000 (10:20 +0000)
Remember the current context on focus-in even though the text-input
isn't set up yet. This helps in the case where the text-input is not yet
created but a widget already got focused. Without that the enable()
invocation in text_input_enter() woulnd't be invoked leaving the input
method disabled.

This fixes

    gtk4-demo --run=search_entry

which would initially not show the on-screen keyboard when e.g using
phoc/sway as compositor.

gtk/gtkimcontextwayland.c

index 8b372d048f91337781af58baee95be902a076d4f..60e1e466bf9c068f1671e6391f3d4a4df5ca23ae 100644 (file)
@@ -794,12 +794,13 @@ gtk_im_context_wayland_focus_in (GtkIMContext *context)
   global = gtk_im_context_wayland_global_get (gtk_widget_get_display (self->widget));
   if (global->current == context)
     return;
+
+  global->current = context;
   if (!global->text_input)
     return;
 
   if (self->gesture)
     gtk_event_controller_reset (GTK_EVENT_CONTROLLER (self->gesture));
-  global->current = context;
 
   if (global->focused)
     enable (self, global);