Activity for ivi-shell follows either click or touch.  Only a single
surface can be active in the shell at a time.

Signed-off-by: Bryce Harrington <[email protected]>
---
 ivi-shell/ivi-shell.c | 10 ++++++++++
 ivi-shell/ivi-shell.h |  2 ++
 2 files changed, 12 insertions(+)

diff --git a/ivi-shell/ivi-shell.c b/ivi-shell/ivi-shell.c
index a767ccf..c5ef623 100644
--- a/ivi-shell/ivi-shell.c
+++ b/ivi-shell/ivi-shell.c
@@ -432,11 +432,16 @@ static void
 click_to_activate_binding(struct weston_pointer *pointer, uint32_t time,
                          uint32_t button, void *data)
 {
+       struct ivi_shell *shell = data;
+
        if (pointer->grab != &pointer->default_grab)
                return;
        if (pointer->focus == NULL)
                return;
 
+       if (shell->active_surface != NULL)
+               weston_surface_deactivate(shell->active_surface, pointer->seat);
+
        activate_binding(pointer->seat, pointer->focus);
 }
 
@@ -444,11 +449,16 @@ static void
 touch_to_activate_binding(struct weston_touch *touch, uint32_t time,
                          void *data)
 {
+       struct ivi_shell *shell = data;
+
        if (touch->grab != &touch->default_grab)
                return;
        if (touch->focus == NULL)
                return;
 
+       if (shell->active_surface != NULL)
+               weston_surface_deactivate(shell->active_surface, touch->seat);
+
        activate_binding(touch->seat, touch->focus);
 }
 
diff --git a/ivi-shell/ivi-shell.h b/ivi-shell/ivi-shell.h
index 9a05eb2..87bce3a 100644
--- a/ivi-shell/ivi-shell.h
+++ b/ivi-shell/ivi-shell.h
@@ -55,6 +55,8 @@ struct ivi_shell
                struct wl_resource *binding;
                struct wl_list surfaces;
        } input_panel;
+
+       struct weston_surface *active_surface;
 };
 
 struct weston_view *
-- 
1.9.1

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

Reply via email to