On Wed, Jun 8, 2016 at 5:40 PM Arnaud Vrac <[email protected]> wrote: > Without this the input method state will not stay in sync with the > client state. > --- > src/text-backend.c | 18 ++++++++++++++---- > 1 file changed, 14 insertions(+), 4 deletions(-) > > diff --git a/src/text-backend.c b/src/text-backend.c > index 0c000ba..c32ec04 100644 > --- a/src/text-backend.c > +++ b/src/text-backend.c > @@ -121,6 +121,16 @@ static void > input_method_init_seat(struct weston_seat *seat); > > static void > +text_input_set_input_panel_visible(struct text_input *text_input, bool > visible) > +{ > + if (text_input->input_panel_visible == visible) > + return; > + > + text_input->input_panel_visible = visible; > + zwp_text_input_v1_send_input_panel_state(text_input->resource, > visible); > +} > + > +static void > deactivate_input_method(struct input_method *input_method) > { > struct text_input *text_input = input_method->input; > @@ -140,7 +150,7 @@ deactivate_input_method(struct input_method > *input_method) > if (wl_list_empty(&text_input->input_methods) && > text_input->input_panel_visible) { > wl_signal_emit(&ec->hide_input_panel_signal, ec); > - text_input->input_panel_visible = false; > + text_input_set_input_panel_visible(text_input, false); > text_input->manager->current_panel = NULL; > } > zwp_text_input_v1_send_leave(text_input->resource); > @@ -207,7 +217,7 @@ text_input_activate(struct wl_client *client, > current = text_input->manager->current_panel; > > if (current && current != text_input) { > - current->input_panel_visible = false; > + text_input_set_input_panel_visible(current, false); > wl_signal_emit(&ec->hide_input_panel_signal, ec); > text_input->manager->current_panel = NULL; > } > @@ -331,7 +341,7 @@ text_input_show_input_panel(struct wl_client *client, > struct text_input *text_input = > wl_resource_get_user_data(resource); > struct weston_compositor *ec = text_input->ec; > > - text_input->input_panel_visible = true; > + text_input_set_input_panel_visible(text_input, true); > > if (!wl_list_empty(&text_input->input_methods)) { > wl_signal_emit(&ec->show_input_panel_signal, > @@ -348,7 +358,7 @@ text_input_hide_input_panel(struct wl_client *client, > struct text_input *text_input = > wl_resource_get_user_data(resource); > struct weston_compositor *ec = text_input->ec; > > - text_input->input_panel_visible = false; > + text_input_set_input_panel_visible(text_input, false); > > if (!wl_list_empty(&text_input->input_methods) && > text_input == text_input->manager->current_panel) { > -- > 2.7.4 > > Yes that is definitely correct like this.
Reviewed-by: Jan Arne Petersen <[email protected]>
_______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
