shell: enable moving and resizing of a surface when clicking on a subsurface

[pq: changed to weston_surface_get_main_surface(), and used a temporary
variable to clean up the expressions.]

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
dev
Giulio Camuffo 12 years ago committed by Kristian Høgsberg
parent 01388e253e
commit 61da3fc948
  1. 8
      src/shell.c

@ -1109,10 +1109,12 @@ shell_surface_move(struct wl_client *client, struct wl_resource *resource,
{ {
struct weston_seat *seat = seat_resource->data; struct weston_seat *seat = seat_resource->data;
struct shell_surface *shsurf = resource->data; struct shell_surface *shsurf = resource->data;
struct weston_surface *surface;
surface = weston_surface_get_main_surface(seat->pointer->focus);
if (seat->pointer->button_count == 0 || if (seat->pointer->button_count == 0 ||
seat->pointer->grab_serial != serial || seat->pointer->grab_serial != serial ||
seat->pointer->focus != shsurf->surface) surface != shsurf->surface)
return; return;
if (surface_move(shsurf, seat) < 0) if (surface_move(shsurf, seat) < 0)
@ -1232,13 +1234,15 @@ shell_surface_resize(struct wl_client *client, struct wl_resource *resource,
{ {
struct weston_seat *seat = seat_resource->data; struct weston_seat *seat = seat_resource->data;
struct shell_surface *shsurf = resource->data; struct shell_surface *shsurf = resource->data;
struct weston_surface *surface;
if (shsurf->type == SHELL_SURFACE_FULLSCREEN) if (shsurf->type == SHELL_SURFACE_FULLSCREEN)
return; return;
surface = weston_surface_get_main_surface(seat->pointer->focus);
if (seat->pointer->button_count == 0 || if (seat->pointer->button_count == 0 ||
seat->pointer->grab_serial != serial || seat->pointer->grab_serial != serial ||
seat->pointer->focus != shsurf->surface) surface != shsurf->surface)
return; return;
if (surface_resize(shsurf, seat, edges) < 0) if (surface_resize(shsurf, seat, edges) < 0)

Loading…
Cancel
Save