void resist_move_monitors(ObClient *c, gint resist, gint *x, gint *y)
{
- Rect *area, *parea;
+ Rect *area;
+ const Rect *parea;
guint i;
gint l, t, r, b; /* requested edges */
gint al, at, ar, ab; /* screen area edges */
cr = RECT_RIGHT(c->frame->area);
cb = RECT_BOTTOM(c->frame->area);
- RECT_SET(desired_area, *x, *y, c->area.width, c->area.height);
+ RECT_SET(desired_area, c->frame->area.x, c->frame->area.y,
+ c->frame->area.width, c->frame->area.height);
for (i = 0; i < screen_num_monitors; ++i) {
parea = screen_physical_area_monitor(i);
- if (!RECT_INTERSECTS_RECT(*parea, c->frame->area)) {
- g_free(parea);
+ if (!RECT_INTERSECTS_RECT(*parea, c->frame->area))
continue;
- }
area = screen_area(c->desktop, SCREEN_AREA_ALL_MONITORS,
&desired_area);
else if (cb <= pb && b > pb && b < pb + resist)
*y = pb - h + 1;
- g_free(area);
- g_free(parea);
+ g_slice_free(Rect, area);
}
frame_frame_gravity(c->frame, x, y);
{
gint l, t, r, b; /* my left, top, right and bottom sides */
gint dlt, drb; /* my destination left/top and right/bottom sides */
- Rect *area, *parea;
+ Rect *area;
+ const Rect *parea;
gint al, at, ar, ab; /* screen boundaries */
gint pl, pt, pr, pb; /* physical screen boundaries */
- gint incw, inch;
guint i;
Rect desired_area;
t = RECT_TOP(c->frame->area);
b = RECT_BOTTOM(c->frame->area);
- 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) {
parea = screen_physical_area_monitor(i);
- if (!RECT_INTERSECTS_RECT(*parea, c->frame->area)) {
- g_free(parea);
+ if (!RECT_INTERSECTS_RECT(*parea, c->frame->area))
continue;
- }
area = screen_area(c->desktop, SCREEN_AREA_ALL_MONITORS,
&desired_area);
break;
}
- g_free(area);
- g_free(parea);
+ g_slice_free(Rect, area);
}
}