Desk switch tweaks, shuffle some code around.
SVN revision: 14902
This commit is contained in:
parent
4f03442978
commit
04982714c6
1
src/E.h
1
src/E.h
|
@ -276,7 +276,6 @@ int Esnprintf(va_alist);
|
|||
#define MODE_DESKRAY 8
|
||||
#define MODE_PAGER_DRAG_PENDING 9
|
||||
#define MODE_PAGER_DRAG 10
|
||||
#define MODE_DESKSWITCH 11
|
||||
|
||||
#define EVENT_MOUSE_DOWN 0
|
||||
#define EVENT_MOUSE_UP 1
|
||||
|
|
234
src/desktops.c
234
src/desktops.c
|
@ -41,7 +41,6 @@ typedef struct _desktops
|
|||
}
|
||||
Desktops;
|
||||
|
||||
static void DeskMove(Desk * d, int x, int y);
|
||||
static void DeskRaise(int num);
|
||||
static void DeskLower(int num);
|
||||
static void DesktopHandleEvents(XEvent * ev, void *prm);
|
||||
|
@ -955,96 +954,21 @@ MoveStickyButtonsToCurrentDesk(void)
|
|||
Efree(lst);
|
||||
}
|
||||
|
||||
void
|
||||
DeskGoto(int desk)
|
||||
static void
|
||||
DesksStackingCheck(void)
|
||||
{
|
||||
Desk *d;
|
||||
int i;
|
||||
|
||||
if (Conf.desks.desks_wraparound)
|
||||
for (i = 0; i < Conf.desks.num; i++)
|
||||
{
|
||||
if (desk >= Conf.desks.num)
|
||||
desk = 0;
|
||||
else if (desk < 0)
|
||||
desk = Conf.desks.num - 1;
|
||||
d = DeskGet(i);
|
||||
if (i && !d->viewable)
|
||||
continue;
|
||||
if (!d->dirty_stack)
|
||||
continue;
|
||||
StackDesktop(i);
|
||||
}
|
||||
if (desk < 0 || desk >= Conf.desks.num || desk == desks.previous)
|
||||
return;
|
||||
|
||||
if (EventDebug(EDBUG_TYPE_DESKS))
|
||||
Eprintf("DeskGoto %d\n", desk);
|
||||
|
||||
ModulesSignal(ESIGNAL_DESK_SWITCH_START, NULL);
|
||||
|
||||
ActionsSuspend();
|
||||
|
||||
FocusNewDeskBegin();
|
||||
|
||||
if (Mode.mode == MODE_NONE)
|
||||
Mode.mode = MODE_DESKSWITCH;
|
||||
|
||||
if (desk > 0)
|
||||
{
|
||||
d = _DeskGet(desk);
|
||||
|
||||
if (Conf.desks.slidein)
|
||||
{
|
||||
if (!d->viewable)
|
||||
{
|
||||
switch (Conf.desks.dragdir)
|
||||
{
|
||||
case 0:
|
||||
DeskMove(d, VRoot.w, 0);
|
||||
DeskRaise(desk);
|
||||
EobjSlideTo(&d->o, VRoot.w, 0, 0, 0,
|
||||
Conf.desks.slidespeed);
|
||||
break;
|
||||
case 1:
|
||||
DeskMove(d, -VRoot.w, 0);
|
||||
DeskRaise(desk);
|
||||
EobjSlideTo(&d->o, -VRoot.w, 0, 0, 0,
|
||||
Conf.desks.slidespeed);
|
||||
break;
|
||||
case 2:
|
||||
DeskMove(d, 0, VRoot.h);
|
||||
DeskRaise(desk);
|
||||
EobjSlideTo(&d->o, 0, VRoot.h, 0, 0,
|
||||
Conf.desks.slidespeed);
|
||||
break;
|
||||
case 3:
|
||||
DeskMove(d, 0, -VRoot.h);
|
||||
DeskRaise(desk);
|
||||
EobjSlideTo(&d->o, 0, -VRoot.h, 0, 0,
|
||||
Conf.desks.slidespeed);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
EobjSlideTo(&d->o, EoGetX(d), EoGetY(d), 0, 0,
|
||||
Conf.desks.slidespeed);
|
||||
DeskRaise(desk);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DeskRaise(desk);
|
||||
}
|
||||
DeskMove(d, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
DeskRaise(desk);
|
||||
}
|
||||
|
||||
ActionsResume();
|
||||
FocusNewDesk();
|
||||
|
||||
if (Mode.mode == MODE_DESKSWITCH)
|
||||
Mode.mode = MODE_NONE;
|
||||
|
||||
ModulesSignal(ESIGNAL_DESK_SWITCH_DONE, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1121,20 +1045,111 @@ DeskMove(Desk * d, int x, int y)
|
|||
}
|
||||
|
||||
static void
|
||||
DesksStackingCheck(void)
|
||||
DeskEnter(Desk * d)
|
||||
{
|
||||
Desk *d;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < Conf.desks.num; i++)
|
||||
d->viewable = 1;
|
||||
DeskRefresh(d->num);
|
||||
MoveToDeskTop(d->num);
|
||||
|
||||
desks.previous = desks.current = d->num;
|
||||
|
||||
if (d->num == 0)
|
||||
{
|
||||
d = DeskGet(i);
|
||||
if (i && !d->viewable)
|
||||
continue;
|
||||
if (!d->dirty_stack)
|
||||
continue;
|
||||
StackDesktop(i);
|
||||
for (i = Conf.desks.num - 1; i > 0; i--)
|
||||
DeskHide(desks.order[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
EoMap(d, 0);
|
||||
}
|
||||
|
||||
MoveStickyWindowsToCurrentDesk();
|
||||
MoveStickyButtonsToCurrentDesk();
|
||||
DesksStackingCheck();
|
||||
HintsSetCurrentDesktop();
|
||||
}
|
||||
|
||||
void
|
||||
DeskGoto(int desk)
|
||||
{
|
||||
Desk *d;
|
||||
|
||||
if (Conf.desks.desks_wraparound)
|
||||
{
|
||||
if (desk >= Conf.desks.num)
|
||||
desk = 0;
|
||||
else if (desk < 0)
|
||||
desk = Conf.desks.num - 1;
|
||||
}
|
||||
if (desk < 0 || desk >= Conf.desks.num || desk == desks.previous)
|
||||
return;
|
||||
|
||||
d = _DeskGet(desk);
|
||||
|
||||
if (EventDebug(EDBUG_TYPE_DESKS))
|
||||
Eprintf("DeskGoto %d\n", desk);
|
||||
|
||||
ModulesSignal(ESIGNAL_DESK_SWITCH_START, NULL);
|
||||
|
||||
ActionsSuspend();
|
||||
FocusNewDeskBegin();
|
||||
|
||||
if (desk > 0)
|
||||
{
|
||||
if (Conf.desks.slidein)
|
||||
{
|
||||
if (!d->viewable)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
switch (Conf.desks.dragdir)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
x = VRoot.w;
|
||||
y = 0;
|
||||
break;
|
||||
case 1:
|
||||
x = -VRoot.w;
|
||||
y = 0;
|
||||
break;
|
||||
case 2:
|
||||
x = 0;
|
||||
y = VRoot.h;
|
||||
break;
|
||||
case 3:
|
||||
x = 0;
|
||||
y = -VRoot.h;
|
||||
break;
|
||||
}
|
||||
DeskMove(d, x, y);
|
||||
DeskEnter(d);
|
||||
EobjSlideTo(&d->o, x, y, 0, 0, Conf.desks.slidespeed);
|
||||
}
|
||||
else
|
||||
{
|
||||
EobjSlideTo(&d->o, EoGetX(d), EoGetY(d), 0, 0,
|
||||
Conf.desks.slidespeed);
|
||||
DeskEnter(d);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DeskEnter(d);
|
||||
}
|
||||
DeskMove(d, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
DeskEnter(d);
|
||||
}
|
||||
|
||||
ActionsResume();
|
||||
FocusNewDesk();
|
||||
|
||||
ModulesSignal(ESIGNAL_DESK_SWITCH_DONE, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1157,40 +1172,21 @@ static void
|
|||
DeskRaise(int desk)
|
||||
{
|
||||
Desk *d;
|
||||
int i;
|
||||
|
||||
if (desk < 0 || desk >= Conf.desks.num)
|
||||
return;
|
||||
|
||||
d = _DeskGet(desk);
|
||||
|
||||
FocusNewDeskBegin();
|
||||
d->viewable = 1;
|
||||
DeskRefresh(desk);
|
||||
MoveToDeskTop(desk);
|
||||
|
||||
if (EventDebug(EDBUG_TYPE_DESKS))
|
||||
Eprintf("DeskRaise(%d) current=%d\n", desk, desks.current);
|
||||
|
||||
desks.previous = desks.current = desk;
|
||||
|
||||
if (desk == 0)
|
||||
{
|
||||
for (i = Conf.desks.num - 1; i > 0; i--)
|
||||
DeskHide(desks.order[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
EoMap(d, 0);
|
||||
}
|
||||
|
||||
MoveStickyWindowsToCurrentDesk();
|
||||
MoveStickyButtonsToCurrentDesk();
|
||||
DesksStackingCheck();
|
||||
FocusNewDeskBegin();
|
||||
DeskEnter(d);
|
||||
FocusNewDesk();
|
||||
if (Mode.mode == MODE_NONE)
|
||||
ModulesSignal(ESIGNAL_DESK_SWITCH_DONE, NULL);
|
||||
HintsSetCurrentDesktop();
|
||||
|
||||
ModulesSignal(ESIGNAL_DESK_SWITCH_DONE, NULL);
|
||||
|
||||
ESync();
|
||||
}
|
||||
|
||||
|
|
|
@ -261,8 +261,8 @@ doMoveResizeEwin(EWin * ewin, int desk, int x, int y, int w, int h, int flags)
|
|||
call_depth++;
|
||||
|
||||
if (EventDebug(EDBUG_TYPE_MOVERESIZE))
|
||||
Eprintf("doMoveResizeEwin(%d) %#lx f=%x d=%d %d+%d %d*%d %s\n",
|
||||
call_depth, ewin->client.win, flags, desk, x, y, w, h,
|
||||
Eprintf("doMoveResizeEwin(%d,%d) %#lx f=%x d=%d %d+%d %d*%d %s\n",
|
||||
call_depth, Mode.mode, ewin->client.win, flags, desk, x, y, w, h,
|
||||
EwinGetName(ewin));
|
||||
|
||||
pdesk = (ewin->o.stacked >= 0) ? EoGetDesk(ewin) : -1;
|
||||
|
@ -456,8 +456,7 @@ doMoveResizeEwin(EWin * ewin, int desk, int x, int y, int w, int h, int flags)
|
|||
|
||||
EwinDetermineArea(ewin);
|
||||
|
||||
if ((Mode.mode == MODE_NONE ||
|
||||
Mode.mode == MODE_DESKSWITCH) /* && (move || resize) */ )
|
||||
if (Mode.mode == MODE_NONE)
|
||||
{
|
||||
if (TransparencyEnabled())
|
||||
EwinBorderDraw(ewin, resize, 1); /* Update the border */
|
||||
|
|
|
@ -326,7 +326,7 @@ doPagerRedraw(Pager * p, char newbg)
|
|||
EWin *const *lst;
|
||||
int i, num;
|
||||
|
||||
if (!Conf.pagers.enable || Mode.mode == MODE_DESKSWITCH)
|
||||
if (!Conf.pagers.enable)
|
||||
return;
|
||||
|
||||
/* Desk may be gone */
|
||||
|
@ -482,7 +482,7 @@ doPagerForceUpdate(Pager * p)
|
|||
EWin *const *lst;
|
||||
int i, num;
|
||||
|
||||
if (!Conf.pagers.enable || Mode.mode == MODE_DESKSWITCH)
|
||||
if (!Conf.pagers.enable)
|
||||
return;
|
||||
|
||||
/* Desk may be gone */
|
||||
|
|
Loading…
Reference in New Issue