meego-tablet-shell: Handle app switcher choices
This commit is contained in:
@@ -203,6 +203,9 @@ meego_tablet_shell_attach(struct wlsc_shell *base,
|
|||||||
struct meego_tablet_shell *shell =
|
struct meego_tablet_shell *shell =
|
||||||
container_of(base, struct meego_tablet_shell, shell);
|
container_of(base, struct meego_tablet_shell, shell);
|
||||||
|
|
||||||
|
surface->x = 0;
|
||||||
|
surface->y = 0;
|
||||||
|
|
||||||
if (surface == shell->lockscreen_surface) {
|
if (surface == shell->lockscreen_surface) {
|
||||||
if (shell->state == STATE_STARTING) {
|
if (shell->state == STATE_STARTING) {
|
||||||
wlsc_compositor_fade(shell->compositor, 0.0);
|
wlsc_compositor_fade(shell->compositor, 0.0);
|
||||||
@@ -215,14 +218,13 @@ meego_tablet_shell_attach(struct wlsc_shell *base,
|
|||||||
/* */
|
/* */
|
||||||
} else if (surface == shell->home_surface) {
|
} else if (surface == shell->home_surface) {
|
||||||
/* */
|
/* */
|
||||||
} else if (shell->current_client->surface != surface &&
|
} else if (shell->current_client &&
|
||||||
|
shell->current_client->surface != surface &&
|
||||||
shell->current_client->client == surface->surface.client) {
|
shell->current_client->client == surface->surface.client) {
|
||||||
fprintf(stderr, "initial attach from surface %p, client %p\n",
|
fprintf(stderr, "initial attach from surface %p, client %p\n",
|
||||||
surface, surface->surface.client);
|
surface, surface->surface.client);
|
||||||
meego_tablet_shell_set_state(shell, STATE_TASK);
|
meego_tablet_shell_set_state(shell, STATE_TASK);
|
||||||
shell->current_client->surface = surface;
|
shell->current_client->surface = surface;
|
||||||
surface->x = 0;
|
|
||||||
surface->y = 0;
|
|
||||||
meego_tablet_zoom_run(shell, surface);
|
meego_tablet_zoom_run(shell, surface);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -316,12 +318,33 @@ tablet_shell_set_homescreen(struct wl_client *client,
|
|||||||
fprintf(stderr, "set home screen\n");
|
fprintf(stderr, "set home screen\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meego_tablet_shell_switch_to(struct meego_tablet_shell *shell,
|
||||||
|
struct wlsc_surface *surface)
|
||||||
|
{
|
||||||
|
struct wlsc_compositor *compositor = shell->compositor;
|
||||||
|
struct wlsc_input_device *device =
|
||||||
|
(struct wlsc_input_device *) compositor->input_device;
|
||||||
|
|
||||||
|
wlsc_surface_activate(surface, device, wlsc_compositor_get_time());
|
||||||
|
|
||||||
|
if (shell->state == STATE_SWITCHER) {
|
||||||
|
wl_list_remove(&shell->switcher_listener.link);
|
||||||
|
shell->switcher_surface = NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (surface == shell->home_surface)
|
||||||
|
meego_tablet_shell_set_state(shell, STATE_HOME);
|
||||||
|
else
|
||||||
|
meego_tablet_shell_set_state(shell, STATE_TASK);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
tablet_shell_show_grid(struct wl_client *client,
|
tablet_shell_show_grid(struct wl_client *client,
|
||||||
struct meego_tablet_shell *shell,
|
struct meego_tablet_shell *shell,
|
||||||
struct wl_surface *surface)
|
struct wl_surface *surface)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "tablet_shell_show_grid\n");
|
meego_tablet_shell_switch_to(shell, (struct wlsc_surface *) surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -329,7 +352,7 @@ tablet_shell_show_panels(struct wl_client *client,
|
|||||||
struct meego_tablet_shell *shell,
|
struct meego_tablet_shell *shell,
|
||||||
struct wl_surface *surface)
|
struct wl_surface *surface)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "tablet_shell_show_panels\n");
|
meego_tablet_shell_switch_to(shell, (struct wlsc_surface *) surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -352,25 +375,13 @@ static void
|
|||||||
tablet_client_activate(struct wl_client *client,
|
tablet_client_activate(struct wl_client *client,
|
||||||
struct meego_tablet_client *tablet_client)
|
struct meego_tablet_client *tablet_client)
|
||||||
{
|
{
|
||||||
struct wlsc_compositor *compositor = tablet_client->shell->compositor;
|
|
||||||
struct meego_tablet_shell *shell = tablet_client->shell;
|
struct meego_tablet_shell *shell = tablet_client->shell;
|
||||||
struct wlsc_input_device *device =
|
|
||||||
(struct wlsc_input_device *) compositor->input_device;
|
|
||||||
|
|
||||||
fprintf(stderr, "activate client %s\n", tablet_client->name);
|
|
||||||
shell->current_client = tablet_client;
|
shell->current_client = tablet_client;
|
||||||
if (!tablet_client->surface)
|
if (!tablet_client->surface)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
wlsc_surface_activate(tablet_client->surface, device,
|
meego_tablet_shell_switch_to(shell, tablet_client->surface);
|
||||||
wlsc_compositor_get_time());
|
|
||||||
|
|
||||||
if (shell->state == STATE_SWITCHER) {
|
|
||||||
wl_list_remove(&shell->switcher_listener.link);
|
|
||||||
shell->switcher_surface = NULL;
|
|
||||||
};
|
|
||||||
|
|
||||||
meego_tablet_shell_set_state(tablet_client->shell, STATE_TASK);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct meego_tablet_client_interface tablet_client_interface = {
|
static const struct meego_tablet_client_interface tablet_client_interface = {
|
||||||
|
|||||||
Reference in New Issue
Block a user