Update compositor initiated resize to use a 3x3 grid
authorKristian Høgsberg <krh@bitplanet.net>
Wed, 2 Feb 2011 01:28:32 +0000 (20:28 -0500)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 2 Feb 2011 01:28:32 +0000 (20:28 -0500)
This lets us do all combinations of resize edges.

compositor/compositor.c

index 365344a..b8591bf 100644 (file)
@@ -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;