mirror of
https://github.com/amiwm/amiwm.git
synced 2026-04-14 11:04:18 +00:00
[amiwm] Use XAllocSizeHints() for the sizehints in struct Client
Although it likely doesn't matter /that/ much, the x11 xlib manual does say to use it rather than expecting the struct to stay the same size. Yeah yeah it's 2022 and we really do build things from source, ICCCM is likely not going to change that much nowdays, etc, etc.
This commit is contained in:
76
client.c
76
client.c
@@ -129,22 +129,25 @@ void checksizehints(Client *c)
|
|||||||
{
|
{
|
||||||
long supplied;
|
long supplied;
|
||||||
|
|
||||||
XGetWMNormalHints(dpy, c->window, &c->sizehints, &supplied);
|
XGetWMNormalHints(dpy, c->window, c->sizehints, &supplied);
|
||||||
if(!(c->sizehints.flags&PMinSize))
|
|
||||||
c->sizehints.min_width=c->sizehints.min_height=0;
|
|
||||||
if(!(c->sizehints.flags&PMaxSize))
|
if(!(c->sizehints->flags&PMinSize))
|
||||||
c->sizehints.max_width=c->sizehints.max_height=1<<30;
|
c->sizehints->min_width=c->sizehints->min_height=0;
|
||||||
if(!(c->sizehints.flags&PResizeInc))
|
if(!(c->sizehints->flags&PMaxSize)) {
|
||||||
c->sizehints.width_inc=c->sizehints.height_inc=1;
|
c->sizehints->max_width=c->sizehints->max_height=1<<30;
|
||||||
if(c->sizehints.flags&PBaseSize) {
|
|
||||||
c->sizehints.min_width=c->sizehints.base_width;
|
|
||||||
c->sizehints.min_height=c->sizehints.base_height;
|
|
||||||
}
|
}
|
||||||
if(c->sizehints.min_width<1) c->sizehints.min_width=1;
|
if(!(c->sizehints->flags&PResizeInc))
|
||||||
if(c->sizehints.min_height<1) c->sizehints.min_height=1;
|
c->sizehints->width_inc=c->sizehints->height_inc=1;
|
||||||
c->sizehints.base_width=c->sizehints.min_width;
|
if(c->sizehints->flags&PBaseSize) {
|
||||||
c->sizehints.base_height=c->sizehints.min_height;
|
c->sizehints->min_width=c->sizehints->base_width;
|
||||||
if(c->sizehints.flags&PWinGravity) c->gravity=c->sizehints.win_gravity;
|
c->sizehints->min_height=c->sizehints->base_height;
|
||||||
|
}
|
||||||
|
if(c->sizehints->min_width<1) c->sizehints->min_width=1;
|
||||||
|
if(c->sizehints->min_height<1) c->sizehints->min_height=1;
|
||||||
|
c->sizehints->base_width=c->sizehints->min_width;
|
||||||
|
c->sizehints->base_height=c->sizehints->min_height;
|
||||||
|
if(c->sizehints->flags&PWinGravity) c->gravity=c->sizehints->win_gravity;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setclientstate(Client *c, int state)
|
void setclientstate(Client *c, int state)
|
||||||
@@ -183,6 +186,7 @@ Client *createclient(Window w)
|
|||||||
XGetWindowAttributes(dpy, w, &attr);
|
XGetWindowAttributes(dpy, w, &attr);
|
||||||
|
|
||||||
c = (Client *)calloc(1, sizeof(Client));
|
c = (Client *)calloc(1, sizeof(Client));
|
||||||
|
c->sizehints = XAllocSizeHints();
|
||||||
c->scr = scr;
|
c->scr = scr;
|
||||||
c->window = w;
|
c->window = w;
|
||||||
c->parent = scr->root;
|
c->parent = scr->root;
|
||||||
@@ -215,37 +219,37 @@ Client *createclient(Window w)
|
|||||||
checksizehints(c);
|
checksizehints(c);
|
||||||
c->zoomx=0;
|
c->zoomx=0;
|
||||||
c->zoomy=scr->bh;
|
c->zoomy=scr->bh;
|
||||||
if ((c->sizehints.width_inc &&
|
if ((c->sizehints->width_inc &&
|
||||||
c->sizehints.min_width+c->sizehints.width_inc<=c->sizehints.max_width)||
|
c->sizehints->min_width+c->sizehints->width_inc<=c->sizehints->max_width)||
|
||||||
(c->sizehints.height_inc &&
|
(c->sizehints->height_inc &&
|
||||||
c->sizehints.min_height+c->sizehints.height_inc<=c->sizehints.max_height))
|
c->sizehints->min_height+c->sizehints->height_inc<=c->sizehints->max_height))
|
||||||
b = prefs.sizeborder;
|
b = prefs.sizeborder;
|
||||||
if(c->sizehints.width_inc) {
|
if(c->sizehints->width_inc) {
|
||||||
c->zoomw=scr->width-c->sizehints.base_width;
|
c->zoomw=scr->width-c->sizehints->base_width;
|
||||||
if (b & Psizeright)
|
if (b & Psizeright)
|
||||||
c->zoomw-=22;
|
c->zoomw-=22;
|
||||||
else
|
else
|
||||||
c->zoomw-=8;
|
c->zoomw-=8;
|
||||||
c->zoomw-=c->zoomw%c->sizehints.width_inc;
|
c->zoomw-=c->zoomw%c->sizehints->width_inc;
|
||||||
c->zoomw+=c->sizehints.base_width;
|
c->zoomw+=c->sizehints->base_width;
|
||||||
if(c->zoomw>c->sizehints.max_width)
|
if(c->zoomw>c->sizehints->max_width)
|
||||||
c->zoomw=c->sizehints.max_width;
|
c->zoomw=c->sizehints->max_width;
|
||||||
if(c->zoomw<c->sizehints.min_width)
|
if(c->zoomw<c->sizehints->min_width)
|
||||||
c->zoomw=c->sizehints.min_width;
|
c->zoomw=c->sizehints->min_width;
|
||||||
} else
|
} else
|
||||||
c->zoomw=attr.width;
|
c->zoomw=attr.width;
|
||||||
if(c->sizehints.height_inc) {
|
if(c->sizehints->height_inc) {
|
||||||
c->zoomh=scr->height-c->sizehints.base_height-scr->bh-c->zoomy;
|
c->zoomh=scr->height-c->sizehints->base_height-scr->bh-c->zoomy;
|
||||||
if (b & Psizebottom)
|
if (b & Psizebottom)
|
||||||
c->zoomh -= 10;
|
c->zoomh -= 10;
|
||||||
else
|
else
|
||||||
c->zoomh -= 2;
|
c->zoomh -= 2;
|
||||||
c->zoomh-=c->zoomh%c->sizehints.height_inc;
|
c->zoomh-=c->zoomh%c->sizehints->height_inc;
|
||||||
c->zoomh+=c->sizehints.base_height;
|
c->zoomh+=c->sizehints->base_height;
|
||||||
if(c->zoomh>c->sizehints.max_height)
|
if(c->zoomh>c->sizehints->max_height)
|
||||||
c->zoomh=c->sizehints.max_height;
|
c->zoomh=c->sizehints->max_height;
|
||||||
if(c->zoomh<c->sizehints.min_height)
|
if(c->zoomh<c->sizehints->min_height)
|
||||||
c->zoomh=c->sizehints.min_height;
|
c->zoomh=c->sizehints->min_height;
|
||||||
} else
|
} else
|
||||||
c->zoomh=attr.height;
|
c->zoomh=attr.height;
|
||||||
XSaveContext(dpy, w, client_context, (XPointer)c);
|
XSaveContext(dpy, w, client_context, (XPointer)c);
|
||||||
@@ -301,6 +305,8 @@ void rmclient(Client *c)
|
|||||||
rmicon(c->icon);
|
rmicon(c->icon);
|
||||||
if(c->window)
|
if(c->window)
|
||||||
XDeleteContext(dpy, c->window, client_context);
|
XDeleteContext(dpy, c->window, client_context);
|
||||||
|
if (c->sizehints)
|
||||||
|
XFree(c->sizehints);
|
||||||
free(c);
|
free(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
3
client.h
3
client.h
@@ -25,7 +25,8 @@ typedef struct _Client {
|
|||||||
#else
|
#else
|
||||||
XTextProperty title;
|
XTextProperty title;
|
||||||
#endif
|
#endif
|
||||||
XSizeHints sizehints;
|
/* This needs to be a pointer! */
|
||||||
|
XSizeHints *sizehints;
|
||||||
struct _Style *style;
|
struct _Style *style;
|
||||||
} Client;
|
} Client;
|
||||||
|
|
||||||
|
|||||||
2
frame.c
2
frame.c
@@ -249,7 +249,7 @@ void reparent(Client *c)
|
|||||||
for(kg=keygrabs; kg; kg=kg->next)
|
for(kg=keygrabs; kg; kg=kg->next)
|
||||||
XGrabKey(dpy, kg->keycode, kg->modifiers, c->window, False, GrabModeAsync,
|
XGrabKey(dpy, kg->keycode, kg->modifiers, c->window, False, GrabModeAsync,
|
||||||
GrabModeAsync);
|
GrabModeAsync);
|
||||||
cb=(resizable(&c->sizehints)? prefs.sizeborder:0);
|
cb=(resizable(c->sizehints)? prefs.sizeborder:0);
|
||||||
c->close=creategadget(c, c->parent, 0, 0, 19, scr->bh);
|
c->close=creategadget(c, c->parent, 0, 0, 19, scr->bh);
|
||||||
c->drag=creategadget(c, c->parent, 19, 0, 1, 1);
|
c->drag=creategadget(c, c->parent, 19, 0, 1, 1);
|
||||||
if(c->wflags&WF_NOICONIFY)
|
if(c->wflags&WF_NOICONIFY)
|
||||||
|
|||||||
37
main.c
37
main.c
@@ -1003,9 +1003,12 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CreateNotify:
|
case CreateNotify:
|
||||||
|
|
||||||
if(!XFindContext(dpy, event.xcreatewindow.window, client_context,
|
if(!XFindContext(dpy, event.xcreatewindow.window, client_context,
|
||||||
(XPointer *)&c))
|
(XPointer *)&c)) {
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if(!event.xcreatewindow.override_redirect) {
|
if(!event.xcreatewindow.override_redirect) {
|
||||||
if(!(scr=getscreenbyroot(event.xcreatewindow.parent)))
|
if(!(scr=getscreenbyroot(event.xcreatewindow.parent)))
|
||||||
scr=front;
|
scr=front;
|
||||||
@@ -1429,26 +1432,26 @@ int main(int argc, char *argv[])
|
|||||||
} else if(resizeclient) {
|
} else if(resizeclient) {
|
||||||
int rw=rubberw, rh=rubberh;
|
int rw=rubberw, rh=rubberh;
|
||||||
scr=resizeclient->scr;
|
scr=resizeclient->scr;
|
||||||
if(resizeclient->sizehints.width_inc) {
|
if(resizeclient->sizehints->width_inc) {
|
||||||
rw=motionx-rubberx0-resizeclient->sizehints.base_width-
|
rw=motionx-rubberx0-resizeclient->sizehints->base_width-
|
||||||
resizeclient->framewidth;
|
resizeclient->framewidth;
|
||||||
rw-=rw%resizeclient->sizehints.width_inc;
|
rw-=rw%resizeclient->sizehints->width_inc;
|
||||||
rw+=resizeclient->sizehints.base_width;
|
rw+=resizeclient->sizehints->base_width;
|
||||||
if(rw>resizeclient->sizehints.max_width)
|
if(rw>resizeclient->sizehints->max_width)
|
||||||
rw=resizeclient->sizehints.max_width;
|
rw=resizeclient->sizehints->max_width;
|
||||||
if(rw<resizeclient->sizehints.min_width)
|
if(rw<resizeclient->sizehints->min_width)
|
||||||
rw=resizeclient->sizehints.min_width;
|
rw=resizeclient->sizehints->min_width;
|
||||||
rw+=resizeclient->framewidth;
|
rw+=resizeclient->framewidth;
|
||||||
}
|
}
|
||||||
if(resizeclient->sizehints.height_inc) {
|
if(resizeclient->sizehints->height_inc) {
|
||||||
rh=motiony-rubbery0-resizeclient->sizehints.base_height-
|
rh=motiony-rubbery0-resizeclient->sizehints->base_height-
|
||||||
resizeclient->frameheight;
|
resizeclient->frameheight;
|
||||||
rh-=rh%resizeclient->sizehints.height_inc;
|
rh-=rh%resizeclient->sizehints->height_inc;
|
||||||
rh+=resizeclient->sizehints.base_height;
|
rh+=resizeclient->sizehints->base_height;
|
||||||
if(rh>resizeclient->sizehints.max_height)
|
if(rh>resizeclient->sizehints->max_height)
|
||||||
rh=resizeclient->sizehints.max_height;
|
rh=resizeclient->sizehints->max_height;
|
||||||
if(rh<resizeclient->sizehints.min_height)
|
if(rh<resizeclient->sizehints->min_height)
|
||||||
rh=resizeclient->sizehints.min_height;
|
rh=resizeclient->sizehints->min_height;
|
||||||
rh+=resizeclient->frameheight;
|
rh+=resizeclient->frameheight;
|
||||||
}
|
}
|
||||||
if(rw!=rubberw || rh!=rubberh) {
|
if(rw!=rubberw || rh!=rubberh) {
|
||||||
|
|||||||
Reference in New Issue
Block a user