X-Git-Url: https://git.decadent.org.uk/gitweb/?p=ion3.git;a=blobdiff_plain;f=ioncore%2Fsizehint.c;fp=ioncore%2Fsizehint.c;h=ee5560f875270e38cef891f16f224c2c54df06c9;hp=b5747539ea1780401847d538d1997f6ae785b8d8;hb=de22e45179cb3bafa490294d31d47f361047a30a;hpb=803afbc1cd633f6c025bcd9537e9b7e9aedadd0d diff --git a/ioncore/sizehint.c b/ioncore/sizehint.c index b574753..ee5560f 100644 --- a/ioncore/sizehint.c +++ b/ioncore/sizehint.c @@ -70,8 +70,8 @@ static void correct_aspect(int max_w, int max_h, const WSizeHints *hints, void sizehints_correct(const WSizeHints *hints, int *wp, int *hp, bool min, bool override_no_constrain) { - int w=*wp; - int h=*hp; + int w=*wp, wa; + int h=*hp, ha; int bs=0; if(min){ @@ -85,8 +85,14 @@ void sizehints_correct(const WSizeHints *hints, int *wp, int *hp, return; } - if(w>=hints->min_width && h>=hints->min_height) - correct_aspect(w, h, hints, &w, &h); + wa=w-hints->base_width; + ha=h-hints->base_height; + + if(wa>=0 && ha>=0){ + correct_aspect(wa, ha, hints, &wa, &ha); + w=wa+hints->base_width; + h=ha+hints->base_height; + } if(hints->max_set){ w=minof(w, hints->max_width); @@ -132,9 +138,9 @@ void xsizehints_sanity_adjust(XSizeHints *hints) hints->min_height=0; if(!(hints->flags&PBaseSize) || hints->base_width<0) - hints->base_width=hints->min_width; + hints->base_width=0; if(!(hints->flags&PBaseSize) || hints->base_height<0) - hints->base_height=hints->min_height; + hints->base_height=0; if(hints->flags&PMaxSize){