On Sat, 2017-06-24 at 16:03 -0500, Joshua Watt wrote: > Previously, the hide_input_panel and show_input_panel messages for > the text > input protocol were limited to specific cases, such as showing the > panel on > activation, or making the panel visible after activation. Now, > clients are > allowed to toggle the panel visiblity at will as long as they are the > currently > active client > > Signed-off-by: Joshua Watt <jpewhac...@gmail.com> > --- > compositor/text-backend.c | 22 ++++++++++++---------- > 1 file changed, 12 insertions(+), 10 deletions(-) > > diff --git a/compositor/text-backend.c b/compositor/text-backend.c > index bf5c45c..6add101 100644 > --- a/compositor/text-backend.c > +++ b/compositor/text-backend.c > @@ -64,7 +64,7 @@ struct text_input_manager { > struct wl_global *text_input_manager_global; > struct wl_listener destroy_listener; > > - struct text_input *current_panel; > + struct text_input *current_text_input; > > struct weston_compositor *ec; > }; > @@ -140,11 +140,15 @@ deactivate_input_method(struct input_method > *input_method) > input_method->context = NULL; > > if (wl_list_empty(&text_input->input_methods) && > - text_input->input_panel_visible) { > + text_input->input_panel_visible && > + text_input->manager->current_text_input == text_input) { > wl_signal_emit(&ec->hide_input_panel_signal, ec); > text_input->input_panel_visible = false; > - text_input->manager->current_panel = NULL; > } > + > + if (text_input->manager->current_text_input == text_input) > + text_input->manager->current_text_input = NULL; > + > zwp_text_input_v1_send_leave(text_input->resource); > } > > @@ -206,12 +210,11 @@ text_input_activate(struct wl_client *client, > > input_method_context_create(text_input, input_method); > > - current = text_input->manager->current_panel; > + current = text_input->manager->current_text_input; > > if (current && current != text_input) { > current->input_panel_visible = false; > wl_signal_emit(&ec->hide_input_panel_signal, ec); > - text_input->manager->current_panel = NULL; > } > > if (text_input->input_panel_visible) { > @@ -219,8 +222,8 @@ text_input_activate(struct wl_client *client, > text_input->surface); > wl_signal_emit(&ec->update_input_panel_signal, > &text_input->cursor_rectangle); > - text_input->manager->current_panel = text_input; > } > + text_input->manager->current_text_input = text_input; > > zwp_text_input_v1_send_enter(text_input->resource, > text_input->surface->resource); > @@ -335,7 +338,8 @@ text_input_show_input_panel(struct wl_client > *client, > > text_input->input_panel_visible = true; > > - if (!wl_list_empty(&text_input->input_methods)) { > + if (!wl_list_empty(&text_input->input_methods) && > + text_input == text_input->manager->current_text_input) { > wl_signal_emit(&ec->show_input_panel_signal, > text_input->surface); > wl_signal_emit(&ec->update_input_panel_signal, > @@ -353,10 +357,8 @@ text_input_hide_input_panel(struct wl_client > *client, > text_input->input_panel_visible = false; > > if (!wl_list_empty(&text_input->input_methods) && > - text_input == text_input->manager->current_panel) { > - text_input->manager->current_panel = NULL; > + text_input == text_input->manager->current_text_input) > wl_signal_emit(&ec->hide_input_panel_signal, ec); > - } > } > > static void
Ping? _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel