parent
0ca5f9af6f
commit
66e11b03fb
|
@ -736,7 +736,7 @@ EwinInstantShade(EWin * ewin, int force)
|
||||||
{
|
{
|
||||||
XSetWindowAttributes att;
|
XSetWindowAttributes att;
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
int b, d;
|
int minw, minh;
|
||||||
|
|
||||||
if ((ewin->border->border.left == 0) && (ewin->border->border.right == 0)
|
if ((ewin->border->border.left == 0) && (ewin->border->border.right == 0)
|
||||||
&& (ewin->border->border.top == 0) && (ewin->border->border.bottom == 0))
|
&& (ewin->border->border.top == 0) && (ewin->border->border.bottom == 0))
|
||||||
|
@ -751,39 +751,34 @@ EwinInstantShade(EWin * ewin, int force)
|
||||||
w = EoGetW(ewin);
|
w = EoGetW(ewin);
|
||||||
h = EoGetH(ewin);
|
h = EoGetH(ewin);
|
||||||
|
|
||||||
|
EwinBorderMinShadeSize(ewin, &minw, &minh);
|
||||||
|
|
||||||
switch (ewin->border->shadedir)
|
switch (ewin->border->shadedir)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
att.win_gravity = EastGravity;
|
att.win_gravity = EastGravity;
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
w = minw;
|
||||||
EwinBorderMinShadeSize(ewin, &b, &d);
|
|
||||||
w = b;
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
att.win_gravity = WestGravity;
|
att.win_gravity = WestGravity;
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
EwinBorderMinShadeSize(ewin, &b, &d);
|
|
||||||
if (!Mode.wm.startup)
|
if (!Mode.wm.startup)
|
||||||
x = x + w - b;
|
x = x + w - minw;
|
||||||
w = b;
|
w = minw;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
att.win_gravity = SouthGravity;
|
att.win_gravity = SouthGravity;
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
h = minh;
|
||||||
EwinBorderMinShadeSize(ewin, &b, &d);
|
|
||||||
h = d;
|
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
att.win_gravity = SouthGravity;
|
att.win_gravity = SouthGravity;
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
EwinBorderMinShadeSize(ewin, &b, &d);
|
|
||||||
if (!Mode.wm.startup)
|
if (!Mode.wm.startup)
|
||||||
y = y + h - d;
|
y = y + h - minh;
|
||||||
h = d;
|
h = minh;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
||||||
ewin->state.shaded = 2;
|
ewin->state.shaded = 2;
|
||||||
EoMoveResize(ewin, x, y, w, h);
|
EoMoveResize(ewin, x, y, w, h);
|
||||||
EMoveResizeWindow(ewin->win_container, -30, -30, 1, 1);
|
EMoveResizeWindow(ewin->win_container, -30, -30, 1, 1);
|
||||||
|
@ -810,27 +805,19 @@ EwinInstantUnShade(EWin * ewin)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
att.win_gravity = EastGravity;
|
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
w = ewin->client.w + ewin->border->border.left +
|
w = ewin->client.w + ewin->border->border.left +
|
||||||
ewin->border->border.right;
|
ewin->border->border.right;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
att.win_gravity = WestGravity;
|
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
w = ewin->client.w + ewin->border->border.left +
|
w = ewin->client.w + ewin->border->border.left +
|
||||||
ewin->border->border.right;
|
ewin->border->border.right;
|
||||||
x = x + EoGetW(ewin) - w;
|
x = x + EoGetW(ewin) - w;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
att.win_gravity = SouthGravity;
|
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
h = ewin->client.h + ewin->border->border.top +
|
h = ewin->client.h + ewin->border->border.top +
|
||||||
ewin->border->border.bottom;
|
ewin->border->border.bottom;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
att.win_gravity = SouthGravity;
|
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
h = ewin->client.h + ewin->border->border.top +
|
h = ewin->client.h + ewin->border->border.top +
|
||||||
ewin->border->border.bottom;
|
ewin->border->border.bottom;
|
||||||
y = y + EoGetH(ewin) - h;
|
y = y + EoGetH(ewin) - h;
|
||||||
|
@ -859,14 +846,15 @@ typedef struct {
|
||||||
_xywh start;
|
_xywh start;
|
||||||
_xywh final;
|
_xywh final;
|
||||||
int a, b, c, d;
|
int a, b, c, d;
|
||||||
} _ewin_shading_data;
|
} _ewin_shade_data;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
EwinShadeStart(EWin * ewin, _ewin_shading_data * esd)
|
_EwinShadeStart(_ewin_shade_data * esd)
|
||||||
{
|
{
|
||||||
|
EWin *ewin = esd->ewin;
|
||||||
|
int minw, minh;
|
||||||
XSetWindowAttributes att;
|
XSetWindowAttributes att;
|
||||||
|
|
||||||
esd->ewin = ewin;
|
|
||||||
esd->start.x = EoGetX(ewin);
|
esd->start.x = EoGetX(ewin);
|
||||||
esd->start.y = EoGetY(ewin);
|
esd->start.y = EoGetY(ewin);
|
||||||
esd->start.w = EoGetW(ewin);
|
esd->start.w = EoGetW(ewin);
|
||||||
|
@ -875,6 +863,8 @@ EwinShadeStart(EWin * ewin, _ewin_shading_data * esd)
|
||||||
|
|
||||||
ewin->state.shading = 1;
|
ewin->state.shading = 1;
|
||||||
|
|
||||||
|
EwinBorderMinShadeSize(ewin, &minw, &minh);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
Eprintf("EwinShade-B %d\n", ewin->border->shadedir);
|
Eprintf("EwinShade-B %d\n", ewin->border->shadedir);
|
||||||
EGrabServer();
|
EGrabServer();
|
||||||
|
@ -885,28 +875,28 @@ EwinShadeStart(EWin * ewin, _ewin_shading_data * esd)
|
||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
att.win_gravity = EastGravity;
|
att.win_gravity = EastGravity;
|
||||||
EwinBorderMinShadeSize(ewin, &esd->b, &esd->c);
|
|
||||||
esd->a = esd->start.w;
|
esd->a = esd->start.w;
|
||||||
|
esd->b = minw;
|
||||||
esd->final.w = esd->b;
|
esd->final.w = esd->b;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
att.win_gravity = WestGravity;
|
att.win_gravity = WestGravity;
|
||||||
EwinBorderMinShadeSize(ewin, &esd->b, &esd->c);
|
|
||||||
esd->a = esd->start.w;
|
esd->a = esd->start.w;
|
||||||
|
esd->b = minw;
|
||||||
esd->c = esd->start.x + esd->start.w;
|
esd->c = esd->start.x + esd->start.w;
|
||||||
esd->final.x = esd->c - esd->b;
|
esd->final.x = esd->c - esd->b;
|
||||||
esd->final.w = esd->b;
|
esd->final.w = esd->b;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
att.win_gravity = SouthGravity;
|
att.win_gravity = SouthGravity;
|
||||||
EwinBorderMinShadeSize(ewin, &esd->c, &esd->b);
|
|
||||||
esd->a = esd->start.h;
|
esd->a = esd->start.h;
|
||||||
|
esd->b = minh;
|
||||||
esd->final.h = esd->b;
|
esd->final.h = esd->b;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
att.win_gravity = SouthGravity;
|
att.win_gravity = SouthGravity;
|
||||||
EwinBorderMinShadeSize(ewin, &esd->c, &esd->b);
|
|
||||||
esd->a = esd->start.h;
|
esd->a = esd->start.h;
|
||||||
|
esd->b = minh;
|
||||||
esd->c = esd->start.y + esd->start.h;
|
esd->c = esd->start.y + esd->start.h;
|
||||||
esd->final.y = esd->c - esd->b;
|
esd->final.y = esd->c - esd->b;
|
||||||
esd->final.h = esd->b;
|
esd->final.h = esd->b;
|
||||||
|
@ -917,8 +907,10 @@ EwinShadeStart(EWin * ewin, _ewin_shading_data * esd)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
EwinShadeEnd(EWin * ewin, _ewin_shading_data * esd)
|
_EwinShadeEnd(_ewin_shade_data * esd)
|
||||||
{
|
{
|
||||||
|
EWin *ewin = esd->ewin;
|
||||||
|
|
||||||
EoMoveResize(ewin, esd->final.x, esd->final.y, esd->final.w, esd->final.h);
|
EoMoveResize(ewin, esd->final.x, esd->final.y, esd->final.w, esd->final.h);
|
||||||
ewin->state.shaded = 2;
|
ewin->state.shaded = 2;
|
||||||
EMoveResizeWindow(ewin->win_container, -30, -30, 1, 1);
|
EMoveResizeWindow(ewin->win_container, -30, -30, 1, 1);
|
||||||
|
@ -940,8 +932,9 @@ EwinShadeEnd(EWin * ewin, _ewin_shading_data * esd)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
EwinShadeRun(EWin * ewin, _ewin_shading_data * esd)
|
_EwinShadeRun(_ewin_shade_data * esd)
|
||||||
{
|
{
|
||||||
|
EWin *ewin = esd->ewin;
|
||||||
int k, x, y, w, h, ww, hh, cow, coh, shx, shy;
|
int k, x, y, w, h, ww, hh, cow, coh, shx, shy;
|
||||||
|
|
||||||
x = esd->start.x;
|
x = esd->start.x;
|
||||||
|
@ -1017,7 +1010,7 @@ EwinShadeRun(EWin * ewin, _ewin_shading_data * esd)
|
||||||
void
|
void
|
||||||
EwinShade(EWin * ewin)
|
EwinShade(EWin * ewin)
|
||||||
{
|
{
|
||||||
_ewin_shading_data esd;
|
_ewin_shade_data esd;
|
||||||
|
|
||||||
if ((ewin->border->border.left == 0) && (ewin->border->border.right == 0) &&
|
if ((ewin->border->border.left == 0) && (ewin->border->border.right == 0) &&
|
||||||
(ewin->border->border.top == 0) && (ewin->border->border.bottom == 0))
|
(ewin->border->border.top == 0) && (ewin->border->border.bottom == 0))
|
||||||
|
@ -1031,17 +1024,19 @@ EwinShade(EWin * ewin)
|
||||||
|
|
||||||
DeskRestack(EoGetDesk(ewin)); /* Do any pending stacking ops now */
|
DeskRestack(EoGetDesk(ewin)); /* Do any pending stacking ops now */
|
||||||
|
|
||||||
EwinShadeStart(ewin, &esd);
|
esd.ewin = ewin;
|
||||||
|
_EwinShadeStart(&esd);
|
||||||
if ((Conf.shading.animate) || (ewin->type == EWIN_TYPE_MENU))
|
if ((Conf.shading.animate) || (ewin->type == EWIN_TYPE_MENU))
|
||||||
{
|
{
|
||||||
EwinShadeRun(ewin, &esd);
|
_EwinShadeRun(&esd);
|
||||||
}
|
}
|
||||||
EwinShadeEnd(ewin, &esd);
|
_EwinShadeEnd(&esd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
EwinUnshadeStart(EWin * ewin, _ewin_shading_data * esd)
|
_EwinUnshadeStart(_ewin_shade_data * esd)
|
||||||
{
|
{
|
||||||
|
EWin *ewin = esd->ewin;
|
||||||
int cow, coh, clx, cly;
|
int cow, coh, clx, cly;
|
||||||
XSetWindowAttributes att;
|
XSetWindowAttributes att;
|
||||||
|
|
||||||
|
@ -1070,7 +1065,6 @@ EwinUnshadeStart(EWin * ewin, _ewin_shading_data * esd)
|
||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
att.win_gravity = EastGravity;
|
att.win_gravity = EastGravity;
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
esd->a = ewin->border->border.left + ewin->border->border.right;
|
esd->a = ewin->border->border.left + ewin->border->border.right;
|
||||||
esd->b = ewin->client.w + esd->a;
|
esd->b = ewin->client.w + esd->a;
|
||||||
esd->c = 0; /* Not used */
|
esd->c = 0; /* Not used */
|
||||||
|
@ -1080,7 +1074,6 @@ EwinUnshadeStart(EWin * ewin, _ewin_shading_data * esd)
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
att.win_gravity = WestGravity;
|
att.win_gravity = WestGravity;
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
esd->a = ewin->border->border.left + ewin->border->border.right;
|
esd->a = ewin->border->border.left + ewin->border->border.right;
|
||||||
esd->b = ewin->client.w + esd->a;
|
esd->b = ewin->client.w + esd->a;
|
||||||
esd->c = esd->start.x + esd->start.w; /* NB! w != a is possible */
|
esd->c = esd->start.x + esd->start.w; /* NB! w != a is possible */
|
||||||
|
@ -1090,7 +1083,6 @@ EwinUnshadeStart(EWin * ewin, _ewin_shading_data * esd)
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
att.win_gravity = SouthGravity;
|
att.win_gravity = SouthGravity;
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
esd->a = ewin->border->border.top + ewin->border->border.bottom;
|
esd->a = ewin->border->border.top + ewin->border->border.bottom;
|
||||||
esd->b = ewin->client.h + esd->a;
|
esd->b = ewin->client.h + esd->a;
|
||||||
esd->c = 0; /* Not used */
|
esd->c = 0; /* Not used */
|
||||||
|
@ -1100,7 +1092,6 @@ EwinUnshadeStart(EWin * ewin, _ewin_shading_data * esd)
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
att.win_gravity = SouthGravity;
|
att.win_gravity = SouthGravity;
|
||||||
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
|
||||||
esd->a = ewin->border->border.top + ewin->border->border.bottom;
|
esd->a = ewin->border->border.top + ewin->border->border.bottom;
|
||||||
esd->b = ewin->client.h + esd->a;
|
esd->b = ewin->client.h + esd->a;
|
||||||
esd->c = esd->start.y + esd->start.h; /* NB! h != a is possible */
|
esd->c = esd->start.y + esd->start.h; /* NB! h != a is possible */
|
||||||
|
@ -1111,6 +1102,7 @@ EwinUnshadeStart(EWin * ewin, _ewin_shading_data * esd)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EChangeWindowAttributes(EwinGetClientWin(ewin), CWWinGravity, &att);
|
||||||
EMoveResizeWindow(ewin->win_container,
|
EMoveResizeWindow(ewin->win_container,
|
||||||
ewin->border->border.left, ewin->border->border.top,
|
ewin->border->border.left, ewin->border->border.top,
|
||||||
cow, coh);
|
cow, coh);
|
||||||
|
@ -1122,8 +1114,9 @@ EwinUnshadeStart(EWin * ewin, _ewin_shading_data * esd)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
EwinUnshadeEnd(EWin * ewin, _ewin_shading_data * esd)
|
_EwinUnshadeEnd(_ewin_shade_data * esd)
|
||||||
{
|
{
|
||||||
|
EWin *ewin = esd->ewin;
|
||||||
XSetWindowAttributes att;
|
XSetWindowAttributes att;
|
||||||
|
|
||||||
EoMoveResize(ewin, esd->final.x, esd->final.y, esd->final.w, esd->final.h);
|
EoMoveResize(ewin, esd->final.x, esd->final.y, esd->final.w, esd->final.h);
|
||||||
|
@ -1155,8 +1148,9 @@ EwinUnshadeEnd(EWin * ewin, _ewin_shading_data * esd)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
EwinUnshadeRun(EWin * ewin, _ewin_shading_data * esd)
|
_EwinUnshadeRun(_ewin_shade_data * esd)
|
||||||
{
|
{
|
||||||
|
EWin *ewin = esd->ewin;
|
||||||
int k, x, y, w, h, ww, hh, cow, coh, shx, shy;
|
int k, x, y, w, h, ww, hh, cow, coh, shx, shy;
|
||||||
|
|
||||||
x = esd->start.x;
|
x = esd->start.x;
|
||||||
|
@ -1224,7 +1218,7 @@ EwinUnshadeRun(EWin * ewin, _ewin_shading_data * esd)
|
||||||
void
|
void
|
||||||
EwinUnShade(EWin * ewin)
|
EwinUnShade(EWin * ewin)
|
||||||
{
|
{
|
||||||
_ewin_shading_data esd;
|
_ewin_shade_data esd;
|
||||||
|
|
||||||
if (GetZoomEWin() == ewin)
|
if (GetZoomEWin() == ewin)
|
||||||
return;
|
return;
|
||||||
|
@ -1233,12 +1227,13 @@ EwinUnShade(EWin * ewin)
|
||||||
|
|
||||||
DeskRestack(EoGetDesk(ewin)); /* Do any pending stacking ops now */
|
DeskRestack(EoGetDesk(ewin)); /* Do any pending stacking ops now */
|
||||||
|
|
||||||
EwinUnshadeStart(ewin, &esd);
|
esd.ewin = ewin;
|
||||||
|
_EwinUnshadeStart(&esd);
|
||||||
if ((Conf.shading.animate) || (ewin->type == EWIN_TYPE_MENU))
|
if ((Conf.shading.animate) || (ewin->type == EWIN_TYPE_MENU))
|
||||||
{
|
{
|
||||||
EwinUnshadeRun(ewin, &esd);
|
_EwinUnshadeRun(&esd);
|
||||||
}
|
}
|
||||||
EwinUnshadeEnd(ewin, &esd);
|
_EwinUnshadeEnd(&esd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in New Issue