diff --git a/compositor/compositor.c b/compositor/compositor.c index 365344a9..b8591bf9 100644 --- a/compositor/compositor.c +++ b/compositor/compositor.c @@ -773,6 +773,7 @@ notify_button(struct wl_input_device *device, surface = (struct wlsc_surface *) device->pointer_focus; uint32_t edges = 0; + int32_t x, y; if (state && surface && device->grab == NULL) { wlsc_surface_raise(surface); @@ -797,13 +798,20 @@ notify_button(struct wl_input_device *device, else if (state && surface && button == BTN_MIDDLE && (wd->modifier_state & MODIFIER_SUPER)) { - if ((device->grab_x - surface->x) < surface->width / 2) + x = device->grab_x - surface->x; + y = device->grab_y - surface->y; + + if (x < surface->width / 3) edges |= WL_SHELL_RESIZE_LEFT; + else if (x < 2 * surface->width / 3) + edges |= 0; else edges |= WL_SHELL_RESIZE_RIGHT; - if ((device->grab_y - surface->y) < surface->height / 2) + if (y < surface->height / 3) edges |= WL_SHELL_RESIZE_TOP; + else if (y < 2 * surface->height / 3) + edges |= 0; else edges |= WL_SHELL_RESIZE_BOTTOM;