From: Enlightenment S. <no-...@en...> - 2009-11-22 09:53:18
|
Log: Fix resize while shaded. Author: kwo Date: 2009-11-22 01:53:10 -0800 (Sun, 22 Nov 2009) New Revision: 43890 Modified: trunk/E16/e/src/borders.c trunk/E16/e/src/borders.h trunk/E16/e/src/ewin-ops.c Modified: trunk/E16/e/src/borders.c =================================================================== --- trunk/E16/e/src/borders.c 2009-11-22 09:53:08 UTC (rev 43889) +++ trunk/E16/e/src/borders.c 2009-11-22 09:53:10 UTC (rev 43890) @@ -245,7 +245,7 @@ } static void -BorderWinpartCalc(EWin * ewin, int i, int ww, int hh) +BorderWinpartCalc(const EWin * ewin, int i, int ww, int hh) { int x, y, w, h, ox, oy, max, min; int topleft, bottomright; @@ -764,18 +764,15 @@ } void -EwinBorderMinShadeSize(EWin * ewin, int *mw, int *mh) +EwinBorderMinShadeSize(const EWin * ewin, int *mw, int *mh) { int i, pw, ph, w, h, min_w, min_h; int leftborderwidth, rightborderwidth; int topborderwidth, bottomborderwidth; - min_w = 32; - min_h = 32; + pw = ewin->client.w + ewin->border->border.left + ewin->border->border.right; + ph = ewin->client.h + ewin->border->border.top + ewin->border->border.bottom; - pw = EoGetW(ewin); - ph = EoGetH(ewin); - for (i = 0; i < ewin->border->num_winparts; i++) ewin->bits[i].w = -2; for (i = 0; i < ewin->border->num_winparts; i++) @@ -799,7 +796,7 @@ leftborderwidth = w; w = ewin->bits[i].x + ewin->bits[i].w - - (EoGetW(ewin) - ewin->border->border.right); + (pw - ewin->border->border.right); if (rightborderwidth < w) rightborderwidth = w; } @@ -818,7 +815,7 @@ topborderwidth = h; h = ewin->bits[i].y + ewin->bits[i].h - - (EoGetH(ewin) - ewin->border->border.bottom); + (ph - ewin->border->border.bottom); if (bottomborderwidth < h) bottomborderwidth = h; } Modified: trunk/E16/e/src/borders.h =================================================================== --- trunk/E16/e/src/borders.h 2009-11-22 09:53:08 UTC (rev 43889) +++ trunk/E16/e/src/borders.h 2009-11-22 09:53:10 UTC (rev 43890) @@ -90,7 +90,7 @@ void EwinBorderSetTo(EWin * ewin, const Border * b); void EwinBorderDraw(EWin * ewin, int do_shape, int do_paint); void EwinBorderCalcSizes(EWin * ewin, int propagate); -void EwinBorderMinShadeSize(EWin * ewin, int *mw, int *mh); +void EwinBorderMinShadeSize(const EWin * ewin, int *mw, int *mh); void EwinBorderUpdateInfo(EWin * ewin); void EwinBorderChange(EWin * ewin, const Border * b, int normal); void EwinBorderSetInitially(EWin * ewin, const char *name); Modified: trunk/E16/e/src/ewin-ops.c =================================================================== --- trunk/E16/e/src/ewin-ops.c 2009-11-22 09:53:08 UTC (rev 43889) +++ trunk/E16/e/src/ewin-ops.c 2009-11-22 09:53:10 UTC (rev 43890) @@ -301,10 +301,20 @@ ewin->client.w = w; ewin->client.h = h; - w = ewin->client.w + ewin->border->border.left + - ewin->border->border.right; - h = ewin->client.h + ewin->border->border.top + - ewin->border->border.bottom; + if (ewin->state.shaded) + { + w = EoGetW(ewin); + h = EoGetH(ewin); + if (resize) + EwinBorderMinShadeSize(ewin, &w, &h); + } + else + { + w = ewin->client.w + ewin->border->border.left + + ewin->border->border.right; + h = ewin->client.h + ewin->border->border.top + + ewin->border->border.bottom; + } } dx = x - EoGetX(ewin); |