1 diff -ruN compiz-20060222./plugins/switcher.c compiz-20060222/plugins/switcher.c
2 --- compiz-20060222./plugins/switcher.c 2006-02-22 03:27:31.000000000 +0100
3 +++ compiz-20060222/plugins/switcher.c 2006-02-22 21:47:13.744958456 +0100
5 #define SWITCH_TIMESTEP_MAX 50.0f
6 #define SWITCH_TIMESTEP_PRECISION 0.1f
8 +#define SWITCH_ALL_DESKTOPS_DEFAULT TRUE
10 static char *winType[] = {
14 #define SWITCH_SCREEN_OPTION_SPEED 4
15 #define SWITCH_SCREEN_OPTION_TIMESTEP 5
16 #define SWITCH_SCREEN_OPTION_WINDOW_TYPE 6
17 -#define SWITCH_SCREEN_OPTION_NUM 7
18 +#define SWITCH_SCREEN_OPTION_ALL_DESKTOPS 7
19 +#define SWITCH_SCREEN_OPTION_NUM 8
21 typedef struct _SwitchScreen {
22 PreparePaintScreenProc preparePaintScreen;
24 ss->wMask = compWindowTypeMaskFromStringList (&o->value);
28 + case SWITCH_SCREEN_OPTION_ALL_DESKTOPS:
29 + if (compSetBoolOption (o, value))
36 o->rest.s.nString = nWindowTypeString;
38 ss->wMask = compWindowTypeMaskFromStringList (&o->value);
40 + o = &ss->opt[SWITCH_SCREEN_OPTION_ALL_DESKTOPS];
41 + o->name = "all_dekstops";
42 + o->shortDesc = "All Desktops";
43 + o->longDesc = "Switch between windows on all virtual desktops";
44 + o->type = CompOptionTypeBool;
45 + o->value.b = SWITCH_ALL_DESKTOPS_DEFAULT;
51 isSwitchWin (CompWindow *w)
53 + int workspaceX, winRealX, winWorkspace;
54 SWITCH_SCREEN (w->screen);
56 if (!w->mapNum || w->attrib.map_state != IsViewable)
58 if (w->state & CompWindowStateSkipPagerMask)
61 + if (!ss->opt[SWITCH_SCREEN_OPTION_ALL_DESKTOPS].value.b)
63 + /* only switch between windows in the current workspace
64 + Tiago Sousa <mirage@kaotik.org> */
65 + workspaceX = w->screen->width * w->screen->x;
66 + winRealX = w->serverX + workspaceX;
67 + winWorkspace = floor((double)winRealX / (double)w->screen->width);
68 + if (winWorkspace != w->screen->x)