On Wed,  9 Dec 2015 15:03:47 +0900
Nobuhiko Tanibata <[email protected]> wrote:

> From: Nobuhiko Tanibata <[email protected]>
> 
> Similar with Desktop shell, set activate to weston surface which is
> left-clicked by pointer or touched. This is needed to focus it with a seat.
> Without this, a feature who gets activated weston surface by using
> weston_surface_get_main_surface doesn't work correctly because it can
> not get correct focused weston surface. For example, input-panel uses
> weston_surface_get_main_surface to get a weston surface. With this
> weston surface, it get a member: output to decide which output shall
> show a input-panel, software keyboard. Without activation,
> input-panel-ivi can not find a correct output which shows e.g.
> weston-editor who uses input-method.
> 
> Signed-off-by: Nobuhiko Tanibata <[email protected]>
> ---
>  ivi-shell/ivi-shell.c | 54 
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 54 insertions(+)
> 
> diff --git a/ivi-shell/ivi-shell.c b/ivi-shell/ivi-shell.c
> index 1720705..a767ccf 100644
> --- a/ivi-shell/ivi-shell.c
> +++ b/ivi-shell/ivi-shell.c
> @@ -414,6 +414,59 @@ ivi_shell_setting_create(struct ivi_shell_setting *dest,
>       return result;
>  }
>  
> +static void
> +activate_binding(struct weston_seat *seat,
> +              struct weston_view *focus_view)
> +{
> +     struct weston_surface *focus = focus_view->surface;
> +     struct weston_surface *main_surface =
> +             weston_surface_get_main_surface(focus);
> +
> +     if (get_ivi_shell_surface(main_surface) == NULL)
> +             return;
> +
> +     weston_surface_activate(focus, seat);
> +}
> +
> +static void
> +click_to_activate_binding(struct weston_pointer *pointer, uint32_t time,
> +                       uint32_t button, void *data)
> +{
> +     if (pointer->grab != &pointer->default_grab)
> +             return;
> +     if (pointer->focus == NULL)
> +             return;
> +
> +     activate_binding(pointer->seat, pointer->focus);
> +}
> +
> +static void
> +touch_to_activate_binding(struct weston_touch *touch, uint32_t time,
> +                       void *data)
> +{
> +     if (touch->grab != &touch->default_grab)
> +             return;
> +     if (touch->focus == NULL)
> +             return;
> +
> +     activate_binding(touch->seat, touch->focus);
> +}
> +
> +static void
> +shell_add_bindings(struct weston_compositor *compositor,
> +                struct ivi_shell *shell)
> +{
> +     weston_compositor_add_button_binding(compositor, BTN_LEFT, 0,
> +                                          click_to_activate_binding,
> +                                          shell);
> +     weston_compositor_add_button_binding(compositor, BTN_RIGHT, 0,
> +                                          click_to_activate_binding,
> +                                          shell);
> +     weston_compositor_add_touch_binding(compositor, 0,
> +                                         touch_to_activate_binding,
> +                                         shell);
> +}
> +
>  /*
>   * Initialization of ivi-shell.
>   */
> @@ -450,6 +503,7 @@ module_init(struct weston_compositor *compositor,
>               goto out_settings;
>  
>       ivi_layout_init_with_compositor(compositor);
> +     shell_add_bindings(compositor, shell);
>  
>       /* Call module_init of ivi-modules which are defined in weston.ini */
>       if (load_controller_modules(compositor, setting.ivi_module,

Hi,

Reviewed-by: Pekka Paalanen <[email protected]>
Tested-by: Pekka Paalanen <[email protected]>

With this patch, first clicking weston-editor to bring OSK up and then
clicking another app correctly causes the OSK to hide. Without this
patch it did not happen.

With the ivi-shell multiscreen support series, this patch also causes
the OSK to appear on the correct output while previously the OSK always
appeared on the one output.


Thanks,
pq

Attachment: pgpUoYmAnVRRn.pgp
Description: OpenPGP digital signature

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to