+static void get_resize_position(gint *x, gint *y, gboolean cancel)
+{
+ gint dw, dh;
+ gint w, h, lw, lh;
+
+ *x = moveresize_client->frame->area.x;
+ *y = moveresize_client->frame->area.y;
+
+ if (cancel) {
+ w = start_cw;
+ h = start_ch;
+ } else {
+ w = cur_x;
+ h = cur_y;
+ }
+
+ /* see how much it is actually going to resize */
+ {
+ gint cx = *x, cy = *y;
+ frame_frame_gravity(moveresize_client->frame, &cx, &cy, w, h);
+ client_try_configure(moveresize_client, &cx, &cy, &w, &h,
+ &lw, &lh, TRUE);
+ }
+ dw = w - moveresize_client->area.width;
+ dh = h - moveresize_client->area.height;
+
+ switch (lockcorner) {
+ case OB_CORNER_TOPLEFT:
+ break;
+ case OB_CORNER_TOPRIGHT:
+ *x -= dw;
+ break;
+ case OB_CORNER_BOTTOMLEFT:
+ *y -= dh;
+ break;
+ case OB_CORNER_BOTTOMRIGHT:
+ *x -= dw;
+ *y -= dh;
+ break;
+ }
+
+ frame_frame_gravity(moveresize_client->frame, x, y, w, h);
+}
+