if (!(w == self->area.width && h == self->area.height)) {
int basew, baseh, minw, minh;
- int mw, mh, aw, ah;
/* base size is substituted with min size if not specified */
if (self->base_size.width || self->base_size.height) {
minh = self->base_size.height;
}
- /* for interactive resizing. have to move half an increment in each
- direction. */
-
- /* how far we are towards the next size inc */
- mw = (w - basew) % self->size_inc.width;
- mh = (h - baseh) % self->size_inc.height;
- /* amount to add */
- aw = self->size_inc.width / 2;
- ah = self->size_inc.height / 2;
- /* don't let us move into a new size increment */
- if (mw + aw >= self->size_inc.width)
- aw = self->size_inc.width - mw - 1;
- if (mh + ah >= self->size_inc.height)
- ah = self->size_inc.height - mh - 1;
- w += aw;
- h += ah;
-
/* if this is a user-requested resize, then check against min/max
sizes */
moveresize_client = c;
start_cx = c->frame->area.x;
start_cy = c->frame->area.y;
- start_cw = c->area.width;
- start_ch = c->area.height;
+ start_cw = c->area.width + (c->size_inc.width + 1) / 2;
+ start_ch = c->area.height + (c->size_inc.height + 1) / 2;
start_x = x;
start_y = y;
corner = cnr;
Rect *a;
if (resist)
- resist_move(moveresize_client, &cur_x, &cur_y);
+ resist_move_windows(moveresize_client, &cur_x, &cur_y);
+ resist_move_monitors(moveresize_client, &cur_x, &cur_y);
/* get where the client should be */
frame_frame_gravity(moveresize_client->frame, &cur_x, &cur_y);
static void do_resize(gboolean resist)
{
- if (resist) {
- /* resist_size needs the frame size */
- cur_x += moveresize_client->frame->size.left +
- moveresize_client->frame->size.right;
- cur_y += moveresize_client->frame->size.top +
- moveresize_client->frame->size.bottom;
-
- resist_size(moveresize_client, &cur_x, &cur_y, lockcorner);
-
- cur_x -= moveresize_client->frame->size.left +
- moveresize_client->frame->size.right;
- cur_y -= moveresize_client->frame->size.top +
- moveresize_client->frame->size.bottom;
- }
+ /* resist_size_* needs the frame size */
+ cur_x += moveresize_client->frame->size.left +
+ moveresize_client->frame->size.right;
+ cur_y += moveresize_client->frame->size.top +
+ moveresize_client->frame->size.bottom;
+
+ if (resist)
+ resist_size_windows(moveresize_client, &cur_x, &cur_y, lockcorner);
+ resist_size_monitors(moveresize_client, &cur_x, &cur_y, lockcorner);
+
+ cur_x -= moveresize_client->frame->size.left +
+ moveresize_client->frame->size.right;
+ cur_y -= moveresize_client->frame->size.top +
+ moveresize_client->frame->size.bottom;
client_configure(moveresize_client, lockcorner,
moveresize_client->area.x, moveresize_client->area.y,