gint pl, pt, pr, pb; /* physical screen area edges */
gint cl, ct, cr, cb; /* current edges */
gint w, h; /* current size */
+ Rect desired_area;
if (!resist) return;
ct = RECT_TOP(c->frame->area);
cr = RECT_RIGHT(c->frame->area);
cb = RECT_BOTTOM(c->frame->area);
+
+ RECT_SET(desired_area, *x, *y, c->area.width, c->area.height);
for (i = 0; i < screen_num_monitors; ++i) {
- area = screen_area_monitor(c->desktop, i);
parea = screen_physical_area_monitor(i);
- if (!RECT_INTERSECTS_RECT(*parea, c->frame->area))
+ if (!RECT_INTERSECTS_RECT(*parea, c->frame->area)) {
+ g_free(parea);
continue;
+ }
+
+ area = screen_area(c->desktop, SCREEN_AREA_ALL_MONITORS,
+ &desired_area);
al = RECT_LEFT(*area);
at = RECT_TOP(*area);
*y = pt;
else if (cb <= pb && b > pb && b < pb + resist)
*y = pb - h + 1;
+
+ g_free(area);
+ g_free(parea);
}
frame_frame_gravity(c->frame, x, y, c->area.width, c->area.height);
gint pl, pt, pr, pb; /* physical screen boundaries */
gint incw, inch;
guint i;
+ Rect desired_area;
if (!resist) return;
incw = c->size_inc.width;
inch = c->size_inc.height;
+ RECT_SET(desired_area, c->area.x, c->area.y, *w, *h);
+
for (i = 0; i < screen_num_monitors; ++i) {
- area = screen_area_monitor(c->desktop, i);
parea = screen_physical_area_monitor(i);
- if (!RECT_INTERSECTS_RECT(*parea, c->frame->area))
+ if (!RECT_INTERSECTS_RECT(*parea, c->frame->area)) {
+ g_free(parea);
continue;
+ }
+
+ area = screen_area(c->desktop, SCREEN_AREA_ALL_MONITORS,
+ &desired_area);
/* get the screen boundaries */
al = RECT_LEFT(*area);
*h = b - pt + 1;
break;
}
+
+ g_free(area);
+ g_free(parea);
}
}