diff --git a/eek/eek-gtk-keyboard.c b/eek/eek-gtk-keyboard.c index 656c09a9..f2fb2397 100644 --- a/eek/eek-gtk-keyboard.c +++ b/eek/eek-gtk-keyboard.c @@ -124,9 +124,10 @@ eek_gtk_keyboard_real_size_allocate (GtkWidget *self, (uint32_t)(allocation->width - allocation->x) * scale, (uint32_t)(allocation->height - allocation->y) * scale); if (priv->layout->arrangement != new_type) { - priv->layout->arrangement = new_type; + struct squeek_layout_state layout = *priv->layout; + layout.arrangement = new_type; - eek_layout_holder_use_layout(priv->eekboard_context, priv->layout); + eek_layout_holder_use_layout(priv->eekboard_context, &layout); } if (priv->renderer) diff --git a/eekboard/eekboard-context-service.c b/eekboard/eekboard-context-service.c index eb91c380..4cb350dc 100644 --- a/eekboard/eekboard-context-service.c +++ b/eekboard/eekboard-context-service.c @@ -99,6 +99,7 @@ settings_get_layout(GSettings *settings, char **type, char **layout) void eek_layout_holder_use_layout(LayoutHolder *context, struct squeek_layout_state *state) { + *context->layout = *state; gchar *layout_name = state->overlay_name; if (layout_name == NULL) {