Although it currently only has one available flag, but that'll change.

Signed-off-by: Jonas Ådahl <jad...@gmail.com>
---
 desktop-shell/exposay.c |  9 ++++++---
 desktop-shell/shell.c   | 34 ++++++++++++++++++++++------------
 desktop-shell/shell.h   |  2 +-
 src/compositor.h        |  5 +++++
 4 files changed, 34 insertions(+), 16 deletions(-)

diff --git a/desktop-shell/exposay.c b/desktop-shell/exposay.c
index 1e43240..99a14e0 100644
--- a/desktop-shell/exposay.c
+++ b/desktop-shell/exposay.c
@@ -162,7 +162,8 @@ exposay_highlight_surface(struct desktop_shell *shell,
        shell->exposay.column_current = esurface->column;
        shell->exposay.cur_output = esurface->eoutput;
 
-       activate(shell, view, shell->exposay.seat, false);
+       activate(shell, view, shell->exposay.seat,
+                WESTON_ACTIVATE_FLAG_NONE);
        shell->exposay.focus_current = view;
 }
 
@@ -559,10 +560,12 @@ exposay_transition_inactive(struct desktop_shell *shell, 
int switch_focus)
         * to the new. */
        if (switch_focus && shell->exposay.focus_current)
                activate(shell, shell->exposay.focus_current,
-                        shell->exposay.seat, true);
+                        shell->exposay.seat,
+                        WESTON_ACTIVATE_FLAG_CONFIGURE);
        else if (shell->exposay.focus_prev)
                activate(shell, shell->exposay.focus_prev,
-                        shell->exposay.seat, true);
+                        shell->exposay.seat,
+                        WESTON_ACTIVATE_FLAG_CONFIGURE);
 
        wl_list_for_each(esurface, &shell->exposay.surface_list, link)
                exposay_animate_out(esurface);
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 1c84a88..3b34529 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -832,7 +832,8 @@ focus_state_surface_destroy(struct wl_listener *listener, 
void *data)
        shell = state->seat->compositor->shell_interface.shell;
        if (next) {
                state->keyboard_focus = NULL;
-               activate(shell, next, state->seat, true);
+               activate(shell, next, state->seat,
+                        WESTON_ACTIVATE_FLAG_CONFIGURE);
        } else {
                if (shell->focus_animation_type == ANIMATION_DIM_LAYER) {
                        if (state->ws->focus_animation)
@@ -1989,10 +1990,12 @@ busy_cursor_grab_button(struct weston_pointer_grab 
*base,
        struct weston_seat *seat = pointer->seat;
 
        if (shsurf && button == BTN_LEFT && state) {
-               activate(shsurf->shell, shsurf->view, seat, true);
+               activate(shsurf->shell, shsurf->view, seat,
+                        WESTON_ACTIVATE_FLAG_CONFIGURE);
                surface_move(shsurf, pointer, false);
        } else if (shsurf && button == BTN_RIGHT && state) {
-               activate(shsurf->shell, shsurf->view, seat, true);
+               activate(shsurf->shell, shsurf->view, seat,
+                        WESTON_ACTIVATE_FLAG_CONFIGURE);
                surface_rotate(shsurf, pointer);
        }
 }
@@ -5035,7 +5038,7 @@ lower_fullscreen_layer(struct desktop_shell *shell,
 
 void
 activate(struct desktop_shell *shell, struct weston_view *view,
-        struct weston_seat *seat, bool configure)
+        struct weston_seat *seat, enum weston_activate_flag flags)
 {
        struct weston_surface *es = view->surface;
        struct weston_surface *main_surface;
@@ -5061,7 +5064,7 @@ activate(struct desktop_shell *shell, struct weston_view 
*view,
        old_es = state->keyboard_focus;
        focus_state_set_focus(state, es);
 
-       if (shsurf->state.fullscreen && configure)
+       if (shsurf->state.fullscreen && flags & WESTON_ACTIVATE_FLAG_CONFIGURE)
                shell_configure_fullscreen(shsurf);
        else
                restore_output_mode(shsurf->output);
@@ -5098,7 +5101,8 @@ is_black_surface_view(struct weston_view *view, struct 
weston_view **fs_view)
 static void
 activate_binding(struct weston_seat *seat,
                 struct desktop_shell *shell,
-                struct weston_view *focus_view)
+                struct weston_view *focus_view,
+                enum weston_activate_flag flags)
 {
        struct weston_view *main_view;
        struct weston_surface *main_surface;
@@ -5113,7 +5117,7 @@ activate_binding(struct weston_seat *seat,
        if (get_shell_surface_type(main_surface) == SHELL_SURFACE_NONE)
                return;
 
-       activate(shell, focus_view, seat, true);
+       activate(shell, focus_view, seat, flags);
 }
 
 static void
@@ -5125,7 +5129,8 @@ click_to_activate_binding(struct weston_pointer *pointer, 
uint32_t time,
        if (pointer->focus == NULL)
                return;
 
-       activate_binding(pointer->seat, data, pointer->focus);
+       activate_binding(pointer->seat, data, pointer->focus,
+                        WESTON_ACTIVATE_FLAG_CONFIGURE);
 }
 
 static void
@@ -5137,7 +5142,8 @@ touch_to_activate_binding(struct weston_touch *touch, 
uint32_t time,
        if (touch->focus == NULL)
                return;
 
-       activate_binding(touch->seat, data, touch->focus);
+       activate_binding(touch->seat, data, touch->focus,
+                        WESTON_ACTIVATE_FLAG_CONFIGURE);
 }
 
 static void
@@ -5563,7 +5569,8 @@ map(struct desktop_shell *shell, struct shell_surface 
*shsurf,
                if (shell->locked)
                        break;
                wl_list_for_each(seat, &compositor->seat_list, link)
-                       activate(shell, shsurf->view, seat, true);
+                       activate(shell, shsurf->view, seat,
+                                WESTON_ACTIVATE_FLAG_CONFIGURE);
                break;
        case SHELL_SURFACE_POPUP:
        case SHELL_SURFACE_NONE:
@@ -5971,9 +5978,12 @@ switcher_destroy(struct switcher *switcher)
                weston_surface_damage(view->surface);
        }
 
-       if (switcher->current)
+       if (switcher->current) {
                activate(switcher->shell, switcher->current,
-                        keyboard->seat, true);
+                        keyboard->seat,
+                        WESTON_ACTIVATE_FLAG_CONFIGURE);
+       }
+
        wl_list_remove(&switcher->listener.link);
        weston_keyboard_end_grab(keyboard);
        if (keyboard->input_method_resource)
diff --git a/desktop-shell/shell.h b/desktop-shell/shell.h
index 153ede5..8028bac 100644
--- a/desktop-shell/shell.h
+++ b/desktop-shell/shell.h
@@ -227,7 +227,7 @@ lower_fullscreen_layer(struct desktop_shell *shell,
 
 void
 activate(struct desktop_shell *shell, struct weston_view *view,
-        struct weston_seat *seat, bool configure);
+        struct weston_seat *seat, uint32_t flags);
 
 void
 exposay_binding(struct weston_keyboard *keyboard,
diff --git a/src/compositor.h b/src/compositor.h
index 44d9f86..d1f7b04 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -1064,6 +1064,11 @@ enum weston_key_state_update {
        STATE_UPDATE_NONE,
 };
 
+enum weston_activate_flag {
+       WESTON_ACTIVATE_FLAG_NONE = 0,
+       WESTON_ACTIVATE_FLAG_CONFIGURE = 1 << 0,
+};
+
 void
 weston_version(int *major, int *minor, int *micro);
 
-- 
2.4.3

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to