OBDEFAULTFRAME(self)->decorations = d;
}
-Rect frame_get_window_area(gpointer self)
+void frame_get_window_area(gpointer self, Rect * r)
{
- return OBDEFAULTFRAME(self)->area;
+ /* *r = (OBDEFAULTFRAME(self)->area) ??? */
+ memcpy(r, &(OBDEFAULTFRAME(self)->area), sizeof(Rect));
}
void frame_set_client_area(gpointer self, Rect r)
{
OBDEFAULTFRAME(self)->client_area = r;
}
-void frame_update_layout(gpointer _self, gboolean is_resize, gboolean is_fake)
+void frame_update_layout(gpointer _self, Rect area, gboolean is_resize, gboolean is_fake)
{
ObDefaultFrame * self = (ObDefaultFrame *) _self;
Strut oldsize;
oldsize = self->size;
+ self->client_area = area;
self->area = self->client_area;
/* do this before changing the frame's status like max_horz max_vert */
return OBDEFAULTFRAME(self)->window;
}
-Strut frame_get_size(gpointer self)
+void frame_get_size(gpointer self, Strut * s)
{
- return OBDEFAULTFRAME(self)->size;
+ memcpy(s, &(OBDEFAULTFRAME(self)->size), sizeof(Strut));
}
gint frame_get_decorations(gpointer self)
void frame_set_is_max_horz(gpointer, gboolean);
void frame_set_is_shaded(gpointer, gboolean);
-void frame_update_layout(gpointer, gboolean, gboolean);
+void frame_update_layout(gpointer, Rect, gboolean, gboolean);
void frame_adjust_client_area(gpointer self);
void frame_adjust_state(gpointer self);
void frame_adjust_focus(gpointer self, gboolean hilite);
Window frame_get_window(gpointer);
-Strut frame_get_size(gpointer self);
-Rect frame_get_area(gpointer self);
+void frame_get_size(gpointer self, Strut *);
+void frame_get_area(gpointer self, Rect *);
+
gint frame_get_decorations(gpointer self);
void frame_update_title(gpointer, const gchar *);
y = c->area.y;
client_try_configure(c, &x, &y, &w, &h, &lw, &lh, TRUE);
- Strut c_size = frame_engine->frame_get_size(c->frame);
- Rect c_area = frame_engine->frame_get_window_area(c->frame);
+ Strut c_size;
+ frame_engine->frame_get_size(c->frame, &c_size);
+ Rect c_area;
+ frame_engine->frame_get_window_area(c->frame, &c_area);
/* get the frame's size */
w += c_size.left + c_size.right;
h += c_size.top + c_size.bottom;
ObClient *c = data->client;
guint32 corner;
- Strut c_size = frame_engine->frame_get_size(c->frame);
- Rect c_area = frame_engine->frame_get_window_area(c->frame);
+ Strut c_size;
+ frame_engine->frame_get_size(c->frame, &c_size);
+ Rect c_area;
+ frame_engine->frame_get_window_area(c->frame, &c_area);
if (!data->button)
corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_KEYBOARD);
else if (o->corner_specified)
/* adjust the frame to the client's size before showing or placing
the window */
- frame_engine->frame_set_client_area (self->frame, self->area);
frame_engine->frame_set_hover_flag (self->frame, OB_BUTTON_NONE);
frame_engine->frame_set_press_flag (self->frame, OB_BUTTON_NONE);
frame_engine->frame_set_is_focus (self->frame, FALSE);
frame_engine->frame_set_decorations (self->frame, self->decorations);
frame_engine->frame_update_title (self->frame, self->title);
- frame_engine->frame_update_layout (self->frame, FALSE, TRUE);
+ frame_engine->frame_update_layout (self->frame, self->area, FALSE, TRUE);
frame_engine->frame_update_skin (self->frame);
/* where the frame was placed is where the window was originally */
{
Rect *a = screen_area(self->desktop, SCREEN_AREA_ONE_MONITOR, &place);
- Strut size = frame_engine->frame_get_size(self->frame);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
/* get the size of the frame */
place.width += size.left + size.right;
place.height += size.top + size.bottom;
self->frame = frame_engine->frame_new(self, self->w_client, self->w_frame);
frame_engine->frame_set_decorations (self->frame, self->decorations);
frame_engine->frame_update_title (self->frame, self->title);
- frame_engine->frame_update_layout (self->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
frame_engine->frame_update_skin (self->frame);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
ob_debug("gave extents left %d right %d top %d bottom %d",
- frame_engine->frame_get_size(self->frame).left, frame_engine->frame_get_size(self->frame).right,
- frame_engine->frame_get_size(self->frame).top, frame_engine->frame_get_size(self->frame).bottom);
+ size.left, size.right,
+ size.top, size.bottom);
/* free the ObAppSettings shallow copy */
g_free(settings);
/* get where the frame would be */
frame_client_gravity(self, x, y);
- Strut size = frame_engine->frame_get_size(self->frame);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
/* get the requested size of the window with decorations */
fw = size.left + w + size.right;
Point newtl, newtr, newbl, newbr;
gboolean stationary_l, stationary_r, stationary_t, stationary_b;
- Rect area = frame_engine->frame_get_window_area(self->frame);
+ Rect area;
+ frame_engine->frame_get_window_area(self->frame, &area);
POINT_SET(oldtl, area.x, area.y);
POINT_SET(oldbr, area.x + area.width - 1,
area.y + area.height - 1);
OBT_PROP_SETA32(self->w_client, NET_WM_STATE, ATOM, netstate, num);
if (self->frame)
- frame_engine->frame_update_layout (self->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
}
ObClient *client_search_focus_tree(ObClient *self)
not, so this needs to be called even if we have fullscreened/maxed
*/
self->area = oldarea;
- frame_engine->frame_set_client_area (self->frame, self->area);
frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
client_configure(self, x, y, w, h, FALSE, TRUE, FALSE);
/* set the desktop hint, to make sure that it always exists */
anything visible for real, this way the constraints below can work with
the updated frame dimensions. */
frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, FALSE, TRUE);
+ frame_engine->frame_update_layout (self->frame, self->area, FALSE, TRUE);
/* gets the frame's position */
frame_client_gravity(self, x, y);
a = screen_area(self->desktop, i,
(self->max_horz && self->max_vert ? NULL : &desired));
- Strut size = frame_engine->frame_get_size(self->frame);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
/* set the size and position if maximized */
if (self->max_horz) {
*x = a->x;
gboolean fvert = frame_engine->frame_is_max_vert(self->frame);
gint logicalw, logicalh;
- Strut size = frame_engine->frame_get_size(self->frame);
- Rect area = frame_engine->frame_get_window_area(self->frame);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
+ Rect area;
+ frame_engine->frame_get_window_area(self->frame, &area);
/* find the new x, y, width, and height (and logical size) */
client_try_configure(self, &x, &y, &w, &h, &logicalw, &logicalh, user);
oldw = self->area.width;
oldh = self->area.height;
- oldframe = frame_engine->frame_get_window_area(self->frame);
+ frame_engine->frame_get_window_area(self->frame, &oldframe);
RECT_SET(self->area, x, y, w, h);
frame_engine->frame_set_client_area (self->frame, self->area);
/* if the client is enlarging, then resize the client before the frame */
if (send_resize_client && (w > oldw || h > oldh)) {
frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
}
/* find the frame's dimensions and move/resize it */
mouse_replay_pointer();
frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, TRUE, FALSE);
+ frame_engine->frame_update_layout (self->frame, self->area, TRUE, FALSE);
if (!user)
event_end_ignore_all_enters(ignore_start);
*/
if (send_resize_client && (w <= oldw || h <= oldh)) {
frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
}
XFlush(obt_display);
/* if it moved between monitors, then this can affect the stacking
layer of this window or others - for fullscreen windows */
- Rect current_frame = frame_engine->frame_get_window_area(self->frame);
+ Rect current_frame;
+ frame_engine->frame_get_window_area(self->frame, ¤t_frame);
if (screen_find_monitor(¤t_frame) !=
screen_find_monitor(&oldframe))
{
client_change_wm_state(self); /* the window is being hidden/shown */
/* resize the frame to just the titlebar */
frame_engine->frame_set_is_shaded (self->frame, self->shaded);
- frame_engine->frame_update_layout(self->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout(self->frame, self->area, FALSE, FALSE);
}
static void client_ping_event(ObClient *self, gboolean dead)
OBT_PROP_SET32(self->w_client, NET_WM_DESKTOP, CARDINAL, target);
/* the frame can display the current desktop state */
frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout(self->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout(self->frame, self->area, FALSE, FALSE);
/* 'move' the window to the new desktop */
if (!donthide)
client_hide(self);
guint client_monitor(ObClient *self)
{
- Rect area = frame_engine->frame_get_window_area(self->frame);
+ Rect area;
+ frame_engine->frame_get_window_area(self->frame, &area);
return screen_find_monitor(&area);
}
Rect dock_area;
gint edge;
- Strut size = frame_engine->frame_get_size(self->frame);
- Rect area = frame_engine->frame_get_window_area(self->frame);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
+ Rect area;
+ frame_engine->frame_get_window_area(self->frame, &area);
a = screen_area(self->desktop, SCREEN_AREA_ALL_MONITORS,
&area);
ob_debug("trying window %s", cur->title);
- detect_edge(frame_engine->frame_get_window_area(cur->frame), dir, my_head, my_size, my_edge_start,
+ Rect area;
+ frame_engine->frame_get_window_area(self->frame, &area);
+ detect_edge(area, dir, my_head, my_size, my_edge_start,
my_edge_size, dest, near_edge);
}
dock_get_area(&dock_area);
gboolean near;
- Rect area = frame_engine->frame_get_window_area(self->frame);
+ Rect area;
+ frame_engine->frame_get_window_area(self->frame, &area);
switch (dir) {
case OB_DIRECTION_EAST:
gboolean near;
ObDirection dir;
- Rect area = frame_engine->frame_get_window_area(self->frame);
- Strut size = frame_engine->frame_get_size(self->frame);
+ Rect area;
+ frame_engine->frame_get_window_area(self->frame, &area);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
switch (side) {
case OB_DIRECTION_EAST:
for (it = stacking_list; it; it = g_list_next(it)) {
if (WINDOW_IS_CLIENT(it->data)) {
ObClient *c = WINDOW_AS_CLIENT(it->data);
+ Rect area;
+ frame_engine->frame_get_window_area(c->frame, &area);
if (frame_engine->frame_is_visible(c->frame) &&
/* check the desktop, this is done during desktop
switching and windows are shown/hidden status is not
reliable */
(c->desktop == screen_desktop ||
c->desktop == DESKTOP_ALL) &&
- RECT_CONTAINS(frame_engine->frame_get_window_area(c->frame), x, y))
+ RECT_CONTAINS(area, x, y))
{
ret = c;
break;
void client_show_frame(ObClient * self)
{
frame_engine->frame_set_is_visible(self->frame, TRUE);
- frame_engine->frame_update_layout(self->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout(self->frame, self->area, FALSE, FALSE);
frame_engine->frame_update_skin(self->frame);
/* Grab the server to make sure that the frame window is mapped before
the client gets its MapNotify, i.e. to make sure the client is
if (!mouse && frame->client) {
- Strut size = frame_engine->frame_get_size(frame->client->frame);
- Rect area = frame_engine->frame_get_window_area(frame->client->frame);
+ Strut size;
+ frame_engine->frame_get_size(frame->client->frame, &size);
+ Rect area;
+ frame_engine->frame_get_window_area(frame->client->frame, &area);
*x = area.x;
void frame_client_gravity(ObClient *self, gint *x, gint *y)
{
- Strut size = frame_engine->frame_get_size(self->frame);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
/* horizontal */
switch (self->gravity) {
default:
void frame_frame_gravity(ObClient *self, gint *x, gint *y)
{
- Strut size = frame_engine->frame_get_size(self->frame);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
/* horizontal */
switch (self->gravity) {
default:
void frame_rect_to_frame(ObClient * self, Rect *r)
{
- Strut size = frame_engine->frame_get_size(self->frame);
+ Strut size;
+ frame_engine->frame_get_size(self->frame, &size);
r->width += size.left + size.right;
r->height += size.top + size.bottom;
frame_client_gravity(self, &r->x, &r->y);
void frame_rect_to_client(ObClient * self, Rect *r)
{
- Strut size = frame_engine->frame_get_size(self);
+ Strut size;
+ frame_engine->frame_get_size(self, &size);
r->width -= size.left + size.right;
r->height -= size.top + size.bottom;
frame_frame_gravity(self, &r->x, &r->y);
void (*frame_update_title)(gpointer, const gchar *);
/* get the current window area */
- Rect (*frame_get_window_area)(gpointer);
+ void (*frame_get_window_area)(gpointer, Rect *);
/* set the requested client area */
void (*frame_set_client_area)(gpointer, Rect);
/* Update size, move/resize windows */
- void (*frame_update_layout)(gpointer self, gboolean is_resize,
+ void (*frame_update_layout)(gpointer self, Rect, gboolean is_resize,
gboolean is_fake);
/* Update skin, color/texture windows */
void (*frame_update_skin)(gpointer);
Window (*frame_get_window)(gpointer);
- Strut (*frame_get_size)(gpointer);
+ void (*frame_get_size)(gpointer, Strut *);
gint (*frame_get_decorations)(gpointer);
gboolean (*frame_is_visible)(gpointer);
from our Inferior up to us. This happens when iconifying a
window with RevertToParent focus */
frame_engine->frame_set_is_focus(client->frame, FALSE);
- frame_engine->frame_update_layout (client->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (client->frame, client->area, FALSE, FALSE);
frame_engine->frame_update_skin(client->frame);
/* focus_set_client(NULL) has already been called */
}
else if (client != focus_client) {
focus_left_screen = FALSE;
frame_engine->frame_set_is_focus(client->frame, TRUE);
- frame_engine->frame_update_layout (client->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (client->frame, client->area, FALSE, FALSE);
frame_engine->frame_update_skin (client->frame);
focus_set_client(client);
client_calc_layer(client);
if (client && client != focus_client) {
frame_engine->frame_set_is_focus(client->frame, FALSE);
- frame_engine->frame_update_layout (client->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (client->frame, client->area, FALSE, FALSE);
frame_engine->frame_update_skin(client->frame);
/* focus_set_client(NULL) has already been called in this
section or by focus_fallback */
gulong vals[4];
/* set the frame extents on the window */
- Strut size = frame_engine->frame_get_size(c->frame);
+ Strut size;
+ frame_engine->frame_get_size(c->frame, &size);
vals[0] = size.left;
vals[1] = size.right;
vals[2] = size.top;
desktop. eg. open amarok window on desktop 1, switch to desktop
2, click amarok tray icon. it will move by its decoration size.
*/
- Strut size = frame_engine->frame_get_size(client->frame);
- Rect area = frame_engine->frame_get_window_area(client->frame);
+ Strut size;
+ frame_engine->frame_get_size(client->frame, &size);
+ Rect area;
+ frame_engine->frame_get_window_area(client->frame, &area);
if (x != client->area.x &&
x == (area.x + size.left -
(gint)client->border_width) &&
if (!client_list)
return NULL;
- Rect area = frame_engine->frame_get_window_area(c->frame);
+ Rect area;
+ frame_engine->frame_get_window_area(c->frame, &area);
/* first, find the centre coords of the currently focused window */
my_cx = area.x + area.width / 2;
my_cy = area.y + area.height / 2;
desktop_windows))
continue;
- Rect cur_area = frame_engine->frame_get_window_area(cur->frame);
+ Rect cur_area;
+ frame_engine->frame_get_window_area(cur->frame, &cur_area);
/* find the centre coords of this window, from the
* currently focused window's point of view */
his_cx = (cur_area.x - my_cx)
visible = FALSE;
}
else if (c) {
- Rect area = frame_engine->frame_get_window_area(c->frame);
+ Rect area;
+ frame_engine->frame_get_window_area(c->frame, &area);
/*
if (c)
frame_adjust_focus(c->frame, FALSE);
{
gchar *text;
- Strut size = frame_engine->frame_get_size(c->frame);
- Rect area = frame_engine->frame_get_window_area(c->frame);
+ Strut size;
+ frame_engine->frame_get_size(c->frame, &size);
+ Rect area;
+ frame_engine->frame_get_window_area(c->frame, &area);
text = g_strdup_printf(format, a, b);
if (config_resize_popup_pos == OB_RESIZE_POS_TOP)
popup_position(popup, SouthGravity,
client_configure(moveresize_client, cur_x, cur_y, cur_w, cur_h,
TRUE, FALSE, FALSE);
if (config_resize_popup_show == 2) /* == "Always" */
+ {
+ Rect area;
+ frame_engine->frame_get_window_area(moveresize_client->frame, &area);
popup_coords(moveresize_client, "%d x %d",
- frame_engine->frame_get_window_area(moveresize_client->frame).x,
- frame_engine->frame_get_window_area(moveresize_client->frame).y);
+ area.x,
+ area.y);
+ }
}
}
- Strut size = frame_engine->frame_get_size(moveresize_client->frame);
+ Strut size;
+ frame_engine->frame_get_size(moveresize_client->frame, &size);
/* resist_size_* needs the frame size */
nw += size.left +
size.right;
/* the new config can change the window's decorations */
client_setup_decor_and_functions(c, FALSE);
/* redraw the frames */
- frame_engine->frame_update_layout (c->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (c->frame, c->area, FALSE, FALSE);
/* the decor sizes may have changed, so the windows may
end up in new positions */
client_reconfigure(c, FALSE);
Rect **areas;
guint i;
- Rect area = frame_engine->frame_get_window_area(client->frame);
+ Rect area;
+ frame_engine->frame_get_window_area(client->frame, &area);
areas = pick_head(client);
i = (config_place_monitor != OB_PLACE_MONITOR_ANY) ?
*/
/* don't ignore this window, so remove it from the available
area */
- Rect test_area = frame_engine->frame_get_window_area(test->frame);
+ Rect test_area;
+ frame_engine->frame_get_window_area(test->frame, &test_area);
spaces = area_remove(spaces, &test_area);
}
spaces = area_remove(spaces, &a);
}
- Rect c_area = frame_engine->frame_get_window_area(c->frame);
+ Rect c_area;
+ frame_engine->frame_get_window_area(c->frame, &c_area);
for (sit = spaces; sit; sit = g_slist_next(sit)) {
Rect *r = sit->data;
gint px, py;
Rect *area;
- Strut fsize = frame_engine->frame_get_size(client->frame);
- Rect farea = frame_engine->frame_get_window_area(client->frame);
+ Strut fsize;
+ frame_engine->frame_get_size(client->frame, &fsize);
+ Rect farea;
+ frame_engine->frame_get_window_area(client->frame, &farea);
if (!screen_pointer_pos(&px, &py))
return FALSE;
g_free(areas);
}
- Rect farea = frame_engine->frame_get_window_area(client->frame);
+ Rect farea;
+ frame_engine->frame_get_window_area(client->frame, &farea);
if (settings->position.x.center)
*x = screen->x + screen->width / 2 - client->area.width / 2;
else if (settings->position.x.opposite)
gint l, r, t, b;
for (it = client->parents; it; it = g_slist_next(it)) {
ObClient *m = it->data;
- Rect area = frame_engine->frame_get_window_area(m->frame);
+ Rect area;
+ frame_engine->frame_get_window_area(m->frame, &area);
if (!m->iconic) {
if (first) {
l = RECT_LEFT(area);
client->type == OB_CLIENT_TYPE_SPLASH)
{
Rect **areas;
- Rect area = frame_engine->frame_get_window_area(client->frame);
+ Rect area;
+ frame_engine->frame_get_window_area(client->frame, &area);
guint i;
areas = pick_head(client);
GList *it;
Rect dock_area;
- Rect c_area = frame_engine->frame_get_window_area(c->frame);
+ Rect c_area;
+ frame_engine->frame_get_window_area(c->frame, &c_area);
if (!resist) return;
if (target->below && !c->below && target->skip_taskbar)
continue;
- Rect target_area = frame_engine->frame_get_window_area(target->frame);
+ Rect target_area;
+ frame_engine->frame_get_window_area(target->frame, &target_area);
if (resist_move_window(c_area, target_area,
resist, x, y))
break;
gint w, h; /* current size */
Rect desired_area;
- Rect c_area = frame_engine->frame_get_window_area(c->frame);
+ Rect c_area;
+ frame_engine->frame_get_window_area(c->frame, &c_area);
if (!resist) return;
ObClient *target; /* target */
Rect dock_area;
- Rect c_area = frame_engine->frame_get_window_area(c->frame);
+ Rect c_area;
+ frame_engine->frame_get_window_area(c->frame, &c_area);
if (!resist) return;
for (it = stacking_list; it; it = g_list_next(it)) {
if (target->below && !c->below && target->skip_taskbar)
continue;
- Rect target_area = frame_engine->frame_get_window_area(target->frame);
+ Rect target_area;
+ frame_engine->frame_get_window_area(target->frame, &target_area);
if (resist_size_window(c_area, target_area,
resist, w, h, dir))
break;
guint i;
Rect desired_area;
- Rect c_area = frame_engine->frame_get_window_area(c->frame);
+ Rect c_area;
+ frame_engine->frame_get_window_area(c->frame, &c_area);
if (!resist) return;
/* reduce flicker by hiliting now rather than waiting for the
server FocusIn event */
frame_engine->frame_set_is_focus (c->frame, TRUE);
- frame_engine->frame_update_layout (c->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (c->frame, c->area, FALSE, FALSE);
frame_engine->frame_update_skin (c->frame);
/* do this here so that if you switch desktops to a window with
helper windows then the helper windows won't flash */
/* reduce flicker by hiliting now rather than waiting for the
server FocusIn event */
frame_engine->frame_set_is_focus(c->frame, TRUE);
- frame_engine->frame_update_layout (c->frame, FALSE, FALSE);
+ frame_engine->frame_update_layout (c->frame, c->area, FALSE, FALSE);
frame_engine->frame_update_skin (c->frame);
}
}
gboolean occluded = FALSE;
gboolean found = FALSE;
- Rect client_area = frame_engine->frame_get_window_area(client->frame);
+ Rect client_area;
+ frame_engine->frame_get_window_area(client->frame, &client_area);
/* no need for any looping in this case */
if (sibling && client->layer != sibling->layer)
return occluded;
c->desktop == client->desktop) &&
!client_search_transient(client, c))
{
- Rect c_area = frame_engine->frame_get_window_area(c->frame);
+ Rect c_area;
+ frame_engine->frame_get_window_area(c->frame, &c_area);
if (RECT_INTERSECTS_RECT(c_area, client_area))
{
if (sibling != NULL) {
gboolean occludes = FALSE;
gboolean found = FALSE;
- Rect client_area = frame_engine->frame_get_window_area(client->frame);
+ Rect client_area;
+ frame_engine->frame_get_window_area(client->frame, &client_area);
/* no need for any looping in this case */
if (sibling && client->layer != sibling->layer)
c->desktop == client->desktop) &&
!client_search_transient(c, client))
{
- Rect c_area = frame_engine->frame_get_window_area(c->frame);
+ Rect c_area;
+ frame_engine->frame_get_window_area(c->frame, &c_area);
if (RECT_INTERSECTS_RECT(c_area, client_area))
{
if (sibling != NULL) {