Remove resize_hints args to client_resize(), force usage of client_geometry_hints()

This commit is contained in:
Julien Danjou 2008-03-14 15:21:53 +01:00
parent ea88e324a0
commit 3c3015fd76
10 changed files with 39 additions and 32 deletions

View File

@ -465,8 +465,8 @@ client_manage(Window w, XWindowAttributes *wa, int screen)
ewmh_update_net_client_list(phys_screen); ewmh_update_net_client_list(phys_screen);
} }
static area_t area_t
client_geometry_sizehint(Client *c, area_t geometry) client_geometry_hints(Client *c, area_t geometry)
{ {
double dx, dy, max, min, ratio; double dx, dy, max, min, ratio;
@ -515,11 +515,10 @@ client_geometry_sizehint(Client *c, area_t geometry)
/** Resize client window /** Resize client window
* \param c client to resize * \param c client to resize
* \param geometry new window geometry * \param geometry new window geometry
* \param sizehints respect size hints
* \param return True if resize has been done * \param return True if resize has been done
*/ */
Bool Bool
client_resize(Client *c, area_t geometry, Bool sizehints) client_resize(Client *c, area_t geometry)
{ {
int new_screen; int new_screen;
area_t area; area_t area;
@ -531,9 +530,6 @@ client_resize(Client *c, area_t geometry, Bool sizehints)
geometry.height -= c->titlebar->geometry.height; geometry.height -= c->titlebar->geometry.height;
} }
if(sizehints)
geometry = client_geometry_sizehint(c, geometry);
if(geometry.width <= 0 || geometry.height <= 0) if(geometry.width <= 0 || geometry.height <= 0)
return False; return False;
@ -579,8 +575,6 @@ client_resize(Client *c, area_t geometry, Bool sizehints)
layout_get_current(new_screen)->arrange == layout_floating) && !c->ismax) layout_get_current(new_screen)->arrange == layout_floating) && !c->ismax)
c->f_geometry = geometry; c->f_geometry = geometry;
printf("moving client %s to %d\n", c->name, c->geometry.y);
XConfigureWindow(globalconf.display, c->win, XConfigureWindow(globalconf.display, c->win,
CWX | CWY | CWWidth | CWHeight, &wc); CWX | CWY | CWWidth | CWHeight, &wc);
window_configure(c->win, geometry, c->border); window_configure(c->win, geometry, c->border);
@ -600,7 +594,7 @@ client_setfloating(Client *c, Bool floating)
{ {
if((c->isfloating = floating)) if((c->isfloating = floating))
{ {
client_resize(c, c->f_geometry, False); client_resize(c, c->f_geometry);
XRaiseWindow(globalconf.display, c->win); XRaiseWindow(globalconf.display, c->win);
} }
else else
@ -609,7 +603,7 @@ client_setfloating(Client *c, Bool floating)
if(c->ismax) if(c->ismax)
{ {
c->ismax = False; c->ismax = False;
client_resize(c, c->m_geometry, False); client_resize(c, c->m_geometry);
} }
} }
if(client_isvisible(c, c->screen)) if(client_isvisible(c, c->screen))
@ -918,7 +912,7 @@ uicb_client_moveresize(int screen, char *arg)
int mx, my, dx, dy, nmx, nmy; int mx, my, dx, dy, nmx, nmy;
unsigned int dui; unsigned int dui;
Window dummy; Window dummy;
area_t area; area_t geometry;
Client *sel = globalconf.focus->client; Client *sel = globalconf.focus->client;
Layout *curlay = layout_get_current(screen); Layout *curlay = layout_get_current(screen);
@ -929,10 +923,10 @@ uicb_client_moveresize(int screen, char *arg)
if(sscanf(arg, "%s %s %s %s", x, y, w, h) != 4) if(sscanf(arg, "%s %s %s %s", x, y, w, h) != 4)
return; return;
area.x = (int) compute_new_value_from_arg(x, sel->geometry.x); geometry.x = (int) compute_new_value_from_arg(x, sel->geometry.x);
area.y = (int) compute_new_value_from_arg(y, sel->geometry.y); geometry.y = (int) compute_new_value_from_arg(y, sel->geometry.y);
area.width = (int) compute_new_value_from_arg(w, sel->geometry.width); geometry.width = (int) compute_new_value_from_arg(w, sel->geometry.width);
area.height = (int) compute_new_value_from_arg(h, sel->geometry.height); geometry.height = (int) compute_new_value_from_arg(h, sel->geometry.height);
ox = sel->geometry.x; ox = sel->geometry.x;
oy = sel->geometry.y; oy = sel->geometry.y;
@ -943,7 +937,9 @@ uicb_client_moveresize(int screen, char *arg)
RootWindow(globalconf.display, RootWindow(globalconf.display,
get_phys_screen(screen)), get_phys_screen(screen)),
&dummy, &dummy, &mx, &my, &dx, &dy, &dui); &dummy, &dummy, &mx, &my, &dx, &dy, &dui);
client_resize(sel, area, globalconf.screens[sel->screen].resize_hints); if(globalconf.screens[sel->screen].resize_hints)
geometry = client_geometry_hints(sel, geometry);
client_resize(sel, geometry);
if (xqp && ox <= mx && (ox + 2 * sel->border + ow) >= mx && if (xqp && ox <= mx && (ox + 2 * sel->border + ow) >= mx &&
oy <= my && (oy + 2 * sel->border + oh) >= my) oy <= my && (oy + 2 * sel->border + oh) >= my)
{ {
@ -1005,18 +1001,18 @@ client_maximize(Client *c, area_t geometry)
if(layout_get_current(c->screen)->arrange != layout_floating) if(layout_get_current(c->screen)->arrange != layout_floating)
client_setfloating(c, True); client_setfloating(c, True);
client_focus(c, c->screen, True); client_focus(c, c->screen, True);
client_resize(c, geometry, False); client_resize(c, geometry);
widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS); widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS);
} }
else if(c->wasfloating) else if(c->wasfloating)
{ {
client_setfloating(c, True); client_setfloating(c, True);
client_resize(c, c->m_geometry, False); client_resize(c, c->m_geometry);
widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS); widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS);
} }
else if(layout_get_current(c->screen)->arrange == layout_floating) else if(layout_get_current(c->screen)->arrange == layout_floating)
{ {
client_resize(c, c->m_geometry, False); client_resize(c, c->m_geometry);
widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS); widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS);
} }
else else

View File

@ -31,7 +31,8 @@ void client_focus(Client *, int, Bool);
void client_ban(Client *); void client_ban(Client *);
void client_unban(Client *); void client_unban(Client *);
void client_manage(Window, XWindowAttributes *, int); void client_manage(Window, XWindowAttributes *, int);
Bool client_resize(Client *, area_t, Bool); area_t client_geometry_hints(Client *, area_t);
Bool client_resize(Client *, area_t);
void client_unmanage(Client *); void client_unmanage(Client *);
void client_updatewmhints(Client *); void client_updatewmhints(Client *);
long client_updatesizehints(Client *); long client_updatesizehints(Client *);

View File

@ -181,7 +181,7 @@ event_handle_configurerequest(XEvent * e)
{ {
old_screen = c->screen; old_screen = c->screen;
client_resize(c, geometry, False); client_resize(c, geometry);
tag_client_with_rule(c, rule_matching_client(c)); tag_client_with_rule(c, rule_matching_client(c));

2
ewmh.c
View File

@ -272,7 +272,7 @@ ewmh_process_state_atom(Client *c, Atom state, int set)
client_setfloating(c, True); client_setfloating(c, True);
} }
widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS); widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS);
client_resize(c, geometry, False); client_resize(c, geometry);
XRaiseWindow(globalconf.display, c->win); XRaiseWindow(globalconf.display, c->win);
} }
} }

View File

@ -82,7 +82,10 @@ layout_fibonacci(int screen, int shape)
} }
geometry.width -= 2 * c->border; geometry.width -= 2 * c->border;
geometry.height -= 2 * c->border; geometry.height -= 2 * c->border;
client_resize(c, geometry, globalconf.screens[screen].resize_hints); if(globalconf.screens[screen].resize_hints)
client_resize(c, client_geometry_hints(c, geometry));
else
client_resize(c, geometry);
geometry.width += 2 * c->border; geometry.width += 2 * c->border;
geometry.height += 2 * c->border; geometry.height += 2 * c->border;
} }

View File

@ -32,6 +32,6 @@ layout_floating(int screen)
for(c = globalconf.clients; c; c = c->next) for(c = globalconf.clients; c; c = c->next)
if(client_isvisible(c, screen) && !c->ismax) if(client_isvisible(c, screen) && !c->ismax)
client_resize(c, c->f_geometry, True); client_resize(c, c->f_geometry);
} }
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80 // vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80

View File

@ -40,7 +40,10 @@ layout_max(int screen)
{ {
area.width -= 2 * c->border; area.width -= 2 * c->border;
area.height -= 2 * c->border; area.height -= 2 * c->border;
client_resize(c, area, globalconf.screens[screen].resize_hints); if(globalconf.screens[screen].resize_hints)
client_resize(c, client_geometry_hints(c, area));
else
client_resize(c, area);
area.width += 2 * c->border; area.width += 2 * c->border;
area.height += 2 * c->border; area.height += 2 * c->border;
} }

View File

@ -205,7 +205,9 @@ _tile(int screen, const Position position)
} }
geometry.width = mw - 2 * c->border; geometry.width = mw - 2 * c->border;
geometry.height = mh - 2 * c->border; geometry.height = mh - 2 * c->border;
client_resize(c, geometry, globalconf.screens[screen].resize_hints); if(globalconf.screens[screen].resize_hints)
geometry = client_geometry_hints(c, geometry);
client_resize(c, geometry);
} }
else else
{ {
@ -256,7 +258,9 @@ _tile(int screen, const Position position)
if(position == Bottom) if(position == Bottom)
geometry.y += mh; geometry.y += mh;
} }
client_resize(c, geometry, globalconf.screens[screen].resize_hints); if(globalconf.screens[screen].resize_hints)
geometry = client_geometry_hints(c, geometry);
client_resize(c, geometry);
} }
i++; i++;
} }

View File

@ -109,7 +109,7 @@ uicb_client_movemouse(int screen, char *arg __attribute__ ((unused)))
geometry.y = area.y + area.height - c->geometry.height - 2 * c->border; geometry.y = area.y + area.height - c->geometry.height - 2 * c->border;
geometry.width = c->geometry.width; geometry.width = c->geometry.width;
geometry.height = c->geometry.height; geometry.height = c->geometry.height;
client_resize(c, geometry, False); client_resize(c, geometry);
while(XCheckMaskEvent(globalconf.display, PointerMotionMask, &ev)); while(XCheckMaskEvent(globalconf.display, PointerMotionMask, &ev));
} }
else else
@ -224,7 +224,7 @@ uicb_client_resizemouse(int screen, char *arg __attribute__ ((unused)))
geometry.height = 1; geometry.height = 1;
geometry.x = c->geometry.x; geometry.x = c->geometry.x;
geometry.y = c->geometry.y; geometry.y = c->geometry.y;
client_resize(c, geometry, True); client_resize(c, client_geometry_hints(c, geometry));
} }
else if(layout->arrange == layout_tile || layout->arrange == layout_tileleft else if(layout->arrange == layout_tile || layout->arrange == layout_tileleft
|| layout->arrange == layout_tiletop || layout->arrange == layout_tilebottom) || layout->arrange == layout_tiletop || layout->arrange == layout_tilebottom)

View File

@ -189,11 +189,11 @@ move_client_to_screen(Client *c, int new_screen, Bool doresize)
if(c->m_geometry.y + c->m_geometry.height >= to.y + to.height) if(c->m_geometry.y + c->m_geometry.height >= to.y + to.height)
c->m_geometry.y = to.y + to.height - c->m_geometry.height - 2 * c->border; c->m_geometry.y = to.y + to.height - c->m_geometry.height - 2 * c->border;
client_resize(c, new_geometry, False); client_resize(c, new_geometry);
} }
/* if floating, move to this new coords */ /* if floating, move to this new coords */
else if(c->isfloating) else if(c->isfloating)
client_resize(c, new_f_geometry, False); client_resize(c, new_f_geometry);
/* otherwise just register them */ /* otherwise just register them */
else else
{ {