Set window operation source some more places.
SVN revision: 22058
This commit is contained in:
parent
d87574b64b
commit
e0b0ca87e2
|
@ -156,7 +156,7 @@ SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty, int speed)
|
|||
if (Conf.place.slidemode)
|
||||
DrawEwinShape(ewin, Conf.place.slidemode, tx, ty,
|
||||
ewin->client.w, ewin->client.h, 2);
|
||||
EwinMove(ewin, tx, ty);
|
||||
EwinOpMove(ewin, OPSRC_USER, tx, ty);
|
||||
|
||||
FocusEnable(1);
|
||||
|
||||
|
@ -572,15 +572,51 @@ EwinMoveToDesktopAt(EWin * ewin, Desk * dsk, int x, int y)
|
|||
}
|
||||
|
||||
void
|
||||
EwinFloatAt(EWin * ewin, int x, int y)
|
||||
EwinOpMove(EWin * ewin, int source, int x, int y)
|
||||
{
|
||||
doEwinMoveResize(ewin, EoGetDesk(ewin), x, y, 0, 0, MRF_MOVE | MRF_FLOAT);
|
||||
Mode.op_source = source;
|
||||
EwinMove(ewin, x, y);
|
||||
Mode.op_source = 0;
|
||||
}
|
||||
|
||||
void
|
||||
EwinUnfloatAt(EWin * ewin, Desk * dsk, int x, int y)
|
||||
EwinOpResize(EWin * ewin, int source, int w, int h)
|
||||
{
|
||||
Mode.op_source = source;
|
||||
EwinResize(ewin, w, h);
|
||||
Mode.op_source = 0;
|
||||
}
|
||||
|
||||
void
|
||||
EwinOpMoveResize(EWin * ewin, int source, int x, int y, int w, int h)
|
||||
{
|
||||
Mode.op_source = source;
|
||||
EwinMoveResize(ewin, x, y, w, h);
|
||||
Mode.op_source = 0;
|
||||
}
|
||||
|
||||
void
|
||||
EwinOpMoveToDesktopAt(EWin * ewin, int source, Desk * dsk, int x, int y)
|
||||
{
|
||||
Mode.op_source = source;
|
||||
EwinMoveToDesktopAt(ewin, dsk, x, y);
|
||||
Mode.op_source = 0;
|
||||
}
|
||||
|
||||
void
|
||||
EwinOpFloatAt(EWin * ewin, int source, int x, int y)
|
||||
{
|
||||
Mode.op_source = source;
|
||||
doEwinMoveResize(ewin, EoGetDesk(ewin), x, y, 0, 0, MRF_MOVE | MRF_FLOAT);
|
||||
Mode.op_source = 0;
|
||||
}
|
||||
|
||||
void
|
||||
EwinOpUnfloatAt(EWin * ewin, int source, Desk * dsk, int x, int y)
|
||||
{
|
||||
Mode.op_source = source;
|
||||
doEwinMoveResize(ewin, dsk, x, y, 0, 0, MRF_MOVE | MRF_UNFLOAT);
|
||||
Mode.op_source = 0;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1289,30 +1325,6 @@ EwinUnShade(EWin * ewin)
|
|||
HintsSetWindowState(ewin);
|
||||
}
|
||||
|
||||
void
|
||||
EwinOpMove(EWin * ewin, int source, int x, int y)
|
||||
{
|
||||
Mode.op_source = source;
|
||||
EwinMove(ewin, x, y);
|
||||
Mode.op_source = 0;
|
||||
}
|
||||
|
||||
void
|
||||
EwinOpResize(EWin * ewin, int source, int w, int h)
|
||||
{
|
||||
Mode.op_source = source;
|
||||
EwinResize(ewin, w, h);
|
||||
Mode.op_source = 0;
|
||||
}
|
||||
|
||||
void
|
||||
EwinOpMoveResize(EWin * ewin, int source, int x, int y, int w, int h)
|
||||
{
|
||||
Mode.op_source = source;
|
||||
EwinMoveResize(ewin, x, y, w, h);
|
||||
Mode.op_source = 0;
|
||||
}
|
||||
|
||||
void
|
||||
EwinOpFullscreen(EWin * ewin, int source __UNUSED__, int on)
|
||||
{
|
||||
|
|
11
src/ewins.c
11
src/ewins.c
|
@ -433,29 +433,29 @@ DetermineEwinFloat(EWin * ewin, int dx, int dy)
|
|||
case 0:
|
||||
if (((x + dx < 0) ||
|
||||
((x + dx + w <= VRoot.w) &&
|
||||
((DesktopAt(xd + x + dx + w - 1, yd) != dsk)))))
|
||||
(DesktopAt(xd + x + dx + w - 1, yd) != dsk))))
|
||||
dofloat = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (((x + dx + w > VRoot.w) ||
|
||||
((x + dx >= 0) && ((DesktopAt(xd + x + dx, yd) != dsk)))))
|
||||
((x + dx >= 0) && (DesktopAt(xd + x + dx, yd) != dsk))))
|
||||
dofloat = 1;
|
||||
break;
|
||||
case 2:
|
||||
if (((y + dy < 0) ||
|
||||
((y + dy + h <= VRoot.h) &&
|
||||
((DesktopAt(xd, yd + y + dy + h - 1) != dsk)))))
|
||||
(DesktopAt(xd, yd + y + dy + h - 1) != dsk))))
|
||||
dofloat = 1;
|
||||
break;
|
||||
case 3:
|
||||
if (((y + dy + h > VRoot.h) ||
|
||||
((y + dy >= 0) && ((DesktopAt(xd, yd + y + dy) != dsk)))))
|
||||
((y + dy >= 0) && (DesktopAt(xd, yd + y + dy) != dsk))))
|
||||
dofloat = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (dofloat)
|
||||
EwinFloatAt(ewin, x + xd, y + yd);
|
||||
EwinOpFloatAt(ewin, OPSRC_USER, x + xd, y + yd);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -698,6 +698,7 @@ AddToFamily(EWin * ewin, Window win)
|
|||
/* We got here by MapRequest. DestroyNotify should follow. */
|
||||
goto done;
|
||||
}
|
||||
|
||||
EwinGetHints(ewin);
|
||||
EwinManage(ewin);
|
||||
EwinConfigure(ewin);
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#include "xwin.h"
|
||||
|
||||
/* Window operation sources */
|
||||
#define OPSRC_UNKNOWN 0
|
||||
#define OPSRC_NA 0
|
||||
#define OPSRC_APP 1
|
||||
#define OPSRC_USER 2
|
||||
#define OPSRC_WM 3
|
||||
|
@ -335,8 +335,6 @@ void EwinMoveResizeWithGravity(EWin * ewin, int x, int y, int w,
|
|||
int h, int grav);
|
||||
void EwinMoveToDesktop(EWin * ewin, Desk * d);
|
||||
void EwinMoveToDesktopAt(EWin * ewin, Desk * d, int x, int y);
|
||||
void EwinFloatAt(EWin * ewin, int x, int y);
|
||||
void EwinUnfloatAt(EWin * ewin, Desk * d, int x, int y);
|
||||
void EwinIconify(EWin * ewin);
|
||||
void EwinDeIconify(EWin * ewin);
|
||||
void EwinInstantShade(EWin * ewin, int force);
|
||||
|
@ -351,6 +349,11 @@ void EwinOpMove(EWin * ewin, int source, int x, int y);
|
|||
void EwinOpResize(EWin * ewin, int source, int w, int h);
|
||||
void EwinOpMoveResize(EWin * ewin, int source, int x, int y,
|
||||
int w, int h);
|
||||
void EwinOpMoveToDesktopAt(EWin * ewin, int source, Desk * dsk,
|
||||
int x, int y);
|
||||
void EwinOpFloatAt(EWin * ewin, int source, int x, int y);
|
||||
void EwinOpUnfloatAt(EWin * ewin, int source, Desk * d,
|
||||
int x, int y);
|
||||
void EwinOpClose(EWin * ewin, int source);
|
||||
void EwinOpActivate(EWin * ewin, int source);
|
||||
void EwinOpKill(EWin * ewin, int source);
|
||||
|
|
|
@ -353,7 +353,7 @@ MenuShow(Menu * m, char noshow)
|
|||
if (!noshow)
|
||||
{
|
||||
ICCCM_Cmap(NULL);
|
||||
EwinFloatAt(ewin, EoGetX(ewin), EoGetY(ewin));
|
||||
EwinOpFloatAt(ewin, OPSRC_NA, EoGetX(ewin), EoGetY(ewin));
|
||||
ShowEwin(ewin);
|
||||
if (Conf.menus.animate)
|
||||
EwinUnShade(ewin);
|
||||
|
@ -1578,7 +1578,7 @@ SubmenuShowTimeout(int val __UNUSED__, void *dat)
|
|||
Mode.move.check = 0; /* Bypass on-screen checks */
|
||||
EwinMove(ewin2, EoGetX(ewin) + xo, EoGetY(ewin) + yo);
|
||||
Mode.move.check = 1;
|
||||
EwinFloatAt(ewin2, EoGetX(ewin2), EoGetY(ewin2));
|
||||
EwinOpFloatAt(ewin2, OPSRC_NA, EoGetX(ewin2), EoGetY(ewin2));
|
||||
RaiseEwin(ewin2);
|
||||
ShowEwin(ewin2);
|
||||
|
||||
|
|
|
@ -98,7 +98,7 @@ ActionMoveStart(EWin * ewin, int grab, char constrained, int nogroup)
|
|||
for (i = 0; i < num; i++)
|
||||
{
|
||||
EwinShapeSet(gwins[i]);
|
||||
EwinFloatAt(gwins[i], EoGetX(gwins[i]), EoGetY(gwins[i]));
|
||||
EwinOpFloatAt(gwins[i], OPSRC_USER, EoGetX(gwins[i]), EoGetY(gwins[i]));
|
||||
if (Mode_mr.mode == 0)
|
||||
{
|
||||
ewin->state.moving = 1;
|
||||
|
@ -152,11 +152,11 @@ ActionMoveEnd(EWin * ewin)
|
|||
ewin = gwins[i];
|
||||
d1 = EoGetDesk(ewin);
|
||||
if (d2 == d1)
|
||||
EwinUnfloatAt(ewin, d2, ewin->shape_x, ewin->shape_y);
|
||||
EwinOpUnfloatAt(ewin, OPSRC_USER, d2, ewin->shape_x, ewin->shape_y);
|
||||
else
|
||||
EwinUnfloatAt(ewin, d2,
|
||||
ewin->shape_x - (EoGetX(d2) - EoGetX(d1)),
|
||||
ewin->shape_y - (EoGetY(d2) - EoGetY(d1)));
|
||||
EwinOpUnfloatAt(ewin, OPSRC_USER, d2,
|
||||
ewin->shape_x - (EoGetX(d2) - EoGetX(d1)),
|
||||
ewin->shape_y - (EoGetY(d2) - EoGetY(d1)));
|
||||
if (Mode_mr.mode == 0)
|
||||
{
|
||||
ewin->state.moving = 0;
|
||||
|
|
|
@ -1275,10 +1275,11 @@ EwinGroupMove(EWin * ewin, Desk * dsk, int x, int y)
|
|||
continue;
|
||||
|
||||
if (newdesk)
|
||||
EwinMoveToDesktopAt(gwins[i], dsk, EoGetX(gwins[i]) + dx,
|
||||
EoGetY(gwins[i]) + dy);
|
||||
EwinOpMoveToDesktopAt(gwins[i], OPSRC_USER, dsk,
|
||||
EoGetX(gwins[i]) + dx, EoGetY(gwins[i]) + dy);
|
||||
else
|
||||
EwinMove(gwins[i], EoGetX(gwins[i]) + dx, EoGetY(gwins[i]) + dy);
|
||||
EwinOpMove(gwins[i], OPSRC_USER, EoGetX(gwins[i]) + dx,
|
||||
EoGetY(gwins[i]) + dy);
|
||||
}
|
||||
if (gwins)
|
||||
Efree(gwins);
|
||||
|
|
Loading…
Reference in New Issue