X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions%2Fgrowtoedge.c;h=fffcc4e0e199722f72ea2208e30061cb0a34807e;hb=256c82a9f187842ac6d8823357ee91973c67148d;hp=a5b24e37e85b255530ae33aab97e822b56941d34;hpb=01a35904fec67a7f92a0eb7f19457e79ca3d0988;p=chaz%2Fopenbox diff --git a/openbox/actions/growtoedge.c b/openbox/actions/growtoedge.c index a5b24e37..fffcc4e0 100644 --- a/openbox/actions/growtoedge.c +++ b/openbox/actions/growtoedge.c @@ -63,73 +63,23 @@ static gboolean run_func(ObActionsData *data, gpointer options) Options *o = options; if (data->client) { - gint x, y, width, height, dest; - ObClient *c = data->client; - Rect *a; - - a = screen_area(c->desktop, SCREEN_AREA_ALL_MONITORS, &c->frame->area); - x = c->frame->area.x; - y = c->frame->area.y; - /* get the unshaded frame's dimensions..if it is shaded */ - width = c->area.width + c->frame->size.left + c->frame->size.right; - height = c->area.height + c->frame->size.top + c->frame->size.bottom; - -#if 0 - dest = client_directional_edge_search(c, o->dir); - - switch(o->dir) { - case OB_DIRECTION_NORTH: - if (c->shaded) break; /* don't allow vertical resize if shaded */ - - if (a->y == y) - height = height / 2; - else { - height = c->frame->area.y + height - dest; - y = dest; - } - break; - case OB_DIRECTION_WEST: - if (a->x == x) - width = width / 2; - else { - width = c->frame->area.x + width - dest; - x = dest; + gint x, y, w, h; + + /* don't allow vertical resize if shaded */ + if (o->dir != OB_DIRECTION_NORTH || o->dir != OB_DIRECTION_SOUTH || + !data->client->shaded) + { + client_find_resize_directional(data->client, o->dir, TRUE, + &x, &y, &w, &h); + if (x != data->client->area.x || y != data->client->area.y || + w != data->client->area.width || + h != data->client->area.height) + { + actions_client_move(data, TRUE); + client_move_resize(data->client, x, y, w, h); + actions_client_move(data, FALSE); } - break; - case OB_DIRECTION_SOUTH: - if (c->shaded) break; /* don't allow vertical resize if shaded */ - - if (a->y + a->height == y + c->frame->area.height) { - height = c->frame->area.height / 2; - y = a->y + a->height - height; - } else - height = dest - c->frame->area.y; - y += (height - c->frame->area.height) % c->size_inc.height; - height -= (height - c->frame->area.height) % c->size_inc.height; - break; - case OB_DIRECTION_EAST: - if (a->x + a->width == x + c->frame->area.width) { - width = c->frame->area.width / 2; - x = a->x + a->width - width; - } else - width = dest - c->frame->area.x; - x += (width - c->frame->area.width) % c->size_inc.width; - width -= (width - c->frame->area.width) % c->size_inc.width; - break; - default: - g_assert_not_reached(); } - - width -= c->frame->size.left + c->frame->size.right; - height -= c->frame->size.top + c->frame->size.bottom; - frame_frame_gravity(c->frame, &x, &y); - - actions_client_move(data, FALSE); - client_move_resize(c, x, y, width, height); - actions_client_move(data, TRUE); - -#endif - g_free(a); } return FALSE;