diff --git a/src/compositor.c b/src/compositor.c index 31e26d8c..13ee9275 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -1176,7 +1176,7 @@ surface_attach(struct wl_client *client, &es->buffer_destroy_listener.link); if (es->visual == WESTON_NONE_VISUAL) { - shell->map(shell, es, buffer->width, buffer->height); + shell->map(shell, es, buffer->width, buffer->height, sx, sy); } else if (sx != 0 || sy != 0 || es->geometry.width != buffer->width || es->geometry.height != buffer->height) { diff --git a/src/compositor.h b/src/compositor.h index 6c108055..c47f24b5 100644 --- a/src/compositor.h +++ b/src/compositor.h @@ -130,7 +130,7 @@ struct weston_shell { void (*lock)(struct weston_shell *shell); void (*unlock)(struct weston_shell *shell); void (*map)(struct weston_shell *shell, struct weston_surface *surface, - int32_t width, int32_t height); + int32_t width, int32_t height, int32_t sx, int32_t sy); void (*configure)(struct weston_shell *shell, struct weston_surface *surface, GLfloat x, GLfloat y, int32_t width, int32_t height); diff --git a/src/shell.c b/src/shell.c index 78db0cba..e8c739bd 100644 --- a/src/shell.c +++ b/src/shell.c @@ -1339,8 +1339,8 @@ center_on_output(struct weston_surface *surface, struct weston_output *output) } static void -map(struct weston_shell *base, - struct weston_surface *surface, int32_t width, int32_t height) +map(struct weston_shell *base, struct weston_surface *surface, + int32_t width, int32_t height, int32_t sx, int32_t sy) { struct wl_shell *shell = container_of(base, struct wl_shell, shell); struct weston_compositor *compositor = shell->compositor; @@ -1387,6 +1387,10 @@ map(struct weston_shell *base, break; case SHELL_SURFACE_POPUP: shell_map_popup(shsurf, shsurf->popup.time); + case SHELL_SURFACE_NONE: + weston_surface_set_position(surface, + surface->geometry.x + sx, + surface->geometry.y + sy); break; default: ; diff --git a/src/tablet-shell.c b/src/tablet-shell.c index 48784f64..2c325db0 100644 --- a/src/tablet-shell.c +++ b/src/tablet-shell.c @@ -105,7 +105,7 @@ tablet_shell_set_state(struct tablet_shell *shell, int state) static void tablet_shell_map(struct weston_shell *base, struct weston_surface *surface, - int32_t width, int32_t height) + int32_t width, int32_t height, int32_t sx, int32_t sy) { struct tablet_shell *shell = container_of(base, struct tablet_shell, shell);