On Fri, 2017-08-04 at 22:04 +0200, jana...@gmail.com wrote: > 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> > > Thanks, both patches are improving the implementation in the right > way: > > Reviewed-by: Jan Arne Petersen <jana...@gmail.com>
I think this has set long enough for comments, could I get it Acked and committed please? > > > --- > > 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 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel