X-Git-Url: https://git.decadent.org.uk/gitweb/?p=ion3.git;a=blobdiff_plain;f=ioncore%2Fsizepolicy.c;h=e2cb4de2437b50972bb8841fe3b61b0c64ebda80;hp=a99b7a3bc6243a33256a7351f134d9e79fec0d19;hb=a6561c9679cd701b0d50c3cfd44e4664f7df2b2f;hpb=cd09055902de482a1be019bf4b4efdae64c98d35 diff --git a/ioncore/sizepolicy.c b/ioncore/sizepolicy.c index a99b7a3..e2cb4de 100644 --- a/ioncore/sizepolicy.c +++ b/ioncore/sizepolicy.c @@ -198,6 +198,18 @@ static void sizepolicy_free_snap(WSizePolicy *szplcy, WRegion *reg, } +static WSizePolicy org(WSizePolicy base, WSizePolicy g) +{ + if((base&SIZEPOLICY_VERT_MASK)==0) + base|=g&SIZEPOLICY_VERT_MASK; + + if((base&SIZEPOLICY_HORIZ_MASK)==0) + base|=g&SIZEPOLICY_HORIZ_MASK; + + return base; +} + + void sizepolicy(WSizePolicy *szplcy, WRegion *reg, const WRectangle *rq_geom, int rq_flags, WFitParams *fp) @@ -231,27 +243,27 @@ void sizepolicy(WSizePolicy *szplcy, WRegion *reg, break; case SIZEPOLICY_STRETCH_LEFT: - gravity_stretch_policy(SIZEPOLICY_HORIZ_LEFT|SIZEPOLICY_VERT_CENTER, + gravity_stretch_policy(org(*szplcy, SIZEPOLICY_HORIZ_LEFT|SIZEPOLICY_VERT_CENTER), reg, &tmp, fp, FALSE, TRUE); break; case SIZEPOLICY_STRETCH_RIGHT: - gravity_stretch_policy(SIZEPOLICY_HORIZ_RIGHT|SIZEPOLICY_VERT_CENTER, + gravity_stretch_policy(org(*szplcy, SIZEPOLICY_HORIZ_RIGHT|SIZEPOLICY_VERT_CENTER), reg, &tmp, fp, FALSE, TRUE); break; case SIZEPOLICY_STRETCH_TOP: - gravity_stretch_policy(SIZEPOLICY_VERT_TOP|SIZEPOLICY_HORIZ_CENTER, + gravity_stretch_policy(org(*szplcy, SIZEPOLICY_VERT_TOP|SIZEPOLICY_HORIZ_CENTER), reg, &tmp, fp, TRUE, FALSE); break; case SIZEPOLICY_STRETCH_BOTTOM: - gravity_stretch_policy(SIZEPOLICY_VERT_BOTTOM|SIZEPOLICY_HORIZ_CENTER, + gravity_stretch_policy(org(*szplcy, SIZEPOLICY_VERT_BOTTOM|SIZEPOLICY_HORIZ_CENTER), reg, &tmp, fp, TRUE, FALSE); break; case SIZEPOLICY_FULL_EXACT: - gravity_stretch_policy(SIZEPOLICY_VERT_CENTER|SIZEPOLICY_HORIZ_CENTER, + gravity_stretch_policy(org(*szplcy, SIZEPOLICY_VERT_CENTER|SIZEPOLICY_HORIZ_CENTER), reg, &tmp, fp, TRUE, TRUE); break;