> Please do that unless you plan do update the patch again before > recommend that I include it. > here workspaces keybindings patch, you were faster for terminal patch ;)
> I'm a bit concerned about a plugin moving a window like that when it's > minimized. It can definitely cause viewport switching issues. The > input-transform branch that will be available soon is going to provide > a > proper way to do this. Sure,vignettes plugin isn't really ready to be to use seriously, it's only a beginning. I have already removed the hack for minimized windows and await patiently for the input-transform. In this moment, I play with so that it functions with the Xembed protocol, I have a small question in addition on this subject. It's normal that I can intercept only ClientMessage Xembed when they are sent in broadcast ? Perhaps it's a mistake, wanting to intercept ClientMessage Xembed in compiz ? > - David > > � > Nicolas -- gandalfn <[EMAIL PROTECTED]>
commit 22ba938c602661ce7cfb7123c88ea5f7ce3a9a41
Author: Nicolas Bruguier <[EMAIL PROTECTED]>
Date: Wed Feb 14 00:18:52 2007 +0100
Add workspaces keybindings
diff --git a/include/compiz.h b/include/compiz.h
index cee019d..fb88780 100644
--- a/include/compiz.h
+++ b/include/compiz.h
@@ -546,7 +546,39 @@ typedef int CompFileWatchHandle;
#define COMP_DISPLAY_OPTION_TERMINAL 56
#define COMP_DISPLAY_OPTION_RUN_TERMINAL 57
#define COMP_DISPLAY_OPTION_PING_DELAY 58
-#define COMP_DISPLAY_OPTION_NUM 59
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1 59
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_2 60
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_3 61
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_4 62
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_5 63
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_6 64
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_7 65
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_8 66
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_9 67
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_10 68
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_11 69
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_12 70
+#define COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP 71
+#define COMP_DISPLAY_OPTION_SWITCH_TO_RIGHT_DESKTOP 72
+#define COMP_DISPLAY_OPTION_SWITCH_TO_UP_DESKTOP 73
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DOWN_DESKTOP 74
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1_WINDOW 75
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_2_WINDOW 76
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_3_WINDOW 77
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_4_WINDOW 78
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_5_WINDOW 79
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_6_WINDOW 80
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_7_WINDOW 81
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_8_WINDOW 82
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_9_WINDOW 83
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_10_WINDOW 84
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_11_WINDOW 85
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_12_WINDOW 86
+#define COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP_WINDOW 87
+#define COMP_DISPLAY_OPTION_SWITCH_TO_RIGHT_DESKTOP_WINDOW 88
+#define COMP_DISPLAY_OPTION_SWITCH_TO_UP_DESKTOP_WINDOW 89
+#define COMP_DISPLAY_OPTION_SWITCH_TO_DOWN_DESKTOP_WINDOW 90
+#define COMP_DISPLAY_OPTION_NUM 91
typedef CompOption *(*GetDisplayOptionsProc) (CompDisplay *display,
int *count);
@@ -2145,6 +2177,13 @@ getWindowProp32 (CompDisplay *display,
Atom property,
unsigned short defaultValue);
+Bool
+getWindowPropList (CompDisplay *display,
+ Window id,
+ Atom property,
+ unsigned long **list,
+ unsigned long *nb);
+
void
setWindowProp32 (CompDisplay *display,
Window id,
diff --git a/src/display.c b/src/display.c
index c20246d..5565744 100644
--- a/src/display.c
+++ b/src/display.c
@@ -46,6 +46,13 @@
#include <compiz.h>
+typedef enum _CompDisplayDirection {
+ COMP_DISPLAY_DIRECTION_LEFT,
+ COMP_DISPLAY_DIRECTION_RIGHT,
+ COMP_DISPLAY_DIRECTION_UP,
+ COMP_DISPLAY_DIRECTION_DOWN
+} CompDisplayDirection;
+
static unsigned int virtualModMask[] = {
CompAltMask, CompMetaMask, CompSuperMask, CompHyperMask,
CompModeSwitchMask, CompNumLockMask, CompScrollLockMask
@@ -219,6 +226,85 @@ freeDisplayPrivateIndex (int index)
}
static Bool
+getDesktopLayout(CompDisplay *d,
+ Window root,
+ unsigned int *cols,
+ unsigned int *rows)
+{
+ unsigned long *list, nb;
+ Atom net_desktop_layout;
+
+ net_desktop_layout = XInternAtom (d->display, "_NET_DESKTOP_LAYOUT", 0);
+
+ if (getWindowPropList(d, root, net_desktop_layout, &list, &nb))
+ {
+ if (nb >= 3)
+ {
+ *cols = (unsigned int)list[list[0] ? 2 : 1];
+ *rows = (unsigned int)list[list[0] ? 1 : 2];
+ }
+ XFree(list);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static unsigned int
+calcDesktopIndex(CompDisplay *d,
+ Window root,
+ CompDisplayDirection direction)
+{
+ CompScreen *s;
+ unsigned int cols = 0, rows = 0;
+ int desktop = 0, current_col = 0;
+
+ s = findScreenAtDisplay (d, root);
+ if (s && s->nDesktop > 1 && getDesktopLayout(d, root, &cols, &rows) && rows)
+ {
+ switch (direction)
+ {
+ case COMP_DISPLAY_DIRECTION_LEFT:
+ if (cols == 0)
+ cols = s->nDesktop / rows;
+ current_col = s->currentDesktop / cols;
+ desktop = s->currentDesktop - 1;
+
+ if ((desktop / cols) != current_col)
+ desktop = s->currentDesktop + cols - 1;
+ break;
+ case COMP_DISPLAY_DIRECTION_RIGHT:
+ if (cols == 0)
+ cols = s->nDesktop / rows;
+ current_col = s->currentDesktop / cols;
+ desktop = s->currentDesktop + 1;
+
+ if ((desktop / cols) != current_col)
+ desktop = s->currentDesktop - cols + 1;
+ break;
+ case COMP_DISPLAY_DIRECTION_UP:
+ if (cols == 0)
+ cols = s->nDesktop / rows;
+ desktop = s->currentDesktop - cols;
+
+ if (desktop < 0)
+ desktop = s->nDesktop - cols;
+ break;
+ case COMP_DISPLAY_DIRECTION_DOWN:
+ if (cols == 0)
+ cols = s->nDesktop / rows;
+ desktop = s->currentDesktop + cols;
+
+ if (desktop >= s->nDesktop)
+ desktop -= s->nDesktop;
+ break;
+ default:
+ break;
+ }
+ }
+ return desktop;
+}
+
+static Bool
closeWin (CompDisplay *d,
CompAction *action,
CompActionState state,
@@ -745,6 +831,154 @@ shade (CompDisplay *d,
return TRUE;
}
+static Bool
+switchToDesktopDirection (CompDisplay *d,
+ CompAction *action,
+ CompActionState state,
+ CompOption *option,
+ int nOption)
+{
+ CompScreen *s;
+ Window xid;
+
+ xid = getIntOptionNamed (option, nOption, "root", 0);
+
+ s = findScreenAtDisplay (d, xid);
+ if (s)
+ {
+ CompDisplayDirection direction = -1;
+ int i = COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP;
+
+ while (i <= COMP_DISPLAY_OPTION_SWITCH_TO_DOWN_DESKTOP)
+ {
+ if (action == &d->opt[i].value.action)
+ {
+ direction = i - COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP;
+ break;
+ }
+
+ i++;
+ }
+ if (direction >= COMP_DISPLAY_DIRECTION_LEFT)
+ setCurrentDesktop(s, calcDesktopIndex(d, xid, direction));
+ }
+
+ return FALSE;
+}
+
+static Bool
+switchToDesktop (CompDisplay *d,
+ CompAction *action,
+ CompActionState state,
+ CompOption *option,
+ int nOption)
+{
+ CompScreen *s;
+ Window xid;
+
+ xid = getIntOptionNamed (option, nOption, "root", 0);
+
+ s = findScreenAtDisplay (d, xid);
+ if (s)
+ {
+ int desktop = -1;
+ int i = COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1;
+
+ while (i <= COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_12)
+ {
+ if (action == &d->opt[i].value.action)
+ {
+ desktop = i - COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1;
+ break;
+ }
+
+ i++;
+ }
+ if (desktop >= 0)
+ setCurrentDesktop(s, desktop);
+ }
+ return FALSE;
+}
+
+static Bool
+switchWindowToDesktopDirection (CompDisplay *d,
+ CompAction *action,
+ CompActionState state,
+ CompOption *option,
+ int nOption)
+{
+ CompScreen *s;
+ CompWindow *w;
+ Window xid, root;
+
+ xid = getIntOptionNamed (option, nOption, "window", 0);
+ root = getIntOptionNamed (option, nOption, "root", 0);
+
+ w = findTopLevelWindowAtDisplay (d, xid);
+ s = findScreenAtDisplay (d, root);
+
+ if (w && s)
+ {
+ CompDisplayDirection direction = -1;
+ int i = COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP_WINDOW;
+
+ while (i <= COMP_DISPLAY_OPTION_SWITCH_TO_DOWN_DESKTOP_WINDOW)
+ {
+ if (action == &d->opt[i].value.action)
+ {
+ direction = i - COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP_WINDOW;
+ break;
+ }
+
+ i++;
+ }
+ if (direction >= COMP_DISPLAY_DIRECTION_LEFT)
+ {
+ int desktop = calcDesktopIndex(d, root, direction);
+
+ setCurrentDesktop(s, desktop);
+ setDesktopForWindow(w, desktop);
+ }
+ }
+
+ return FALSE;
+}
+
+static Bool
+switchWindowToDesktop (CompDisplay *d,
+ CompAction *action,
+ CompActionState state,
+ CompOption *option,
+ int nOption)
+{
+ CompWindow *w;
+ Window xid;
+
+ xid = getIntOptionNamed (option, nOption, "window", 0);
+
+ w = findTopLevelWindowAtDisplay (d, xid);
+
+ if (w)
+ {
+ int desktop = -1;
+ int i = COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1_WINDOW;
+
+ while (i <= COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_12_WINDOW)
+ {
+ if (action == &d->opt[i].value.action)
+ {
+ desktop = i - COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1_WINDOW;
+ break;
+ }
+
+ i++;
+ }
+ if (desktop >= 0)
+ setDesktopForWindow(w, desktop);
+ }
+ return FALSE;
+}
+
static void
compDisplayInitOptions (CompDisplay *display,
char **plugin,
@@ -1260,6 +1494,97 @@ compDisplayInitOptions (CompDisplay *display,
o->value.i = PING_DELAY_DEFAULT;
o->rest.i.min = PING_DELAY_MIN;
o->rest.i.max = PING_DELAY_MAX;
+
+#define SWITCH_TO_DESKTOP_SHORT N_("Switch To Desktop %d")
+#define SWITCH_TO_DESKTOP_LONG N_("Switch to desktop %d")
+#define SWITCH_TO_DESKTOP_WINDOW_SHORT N_("Switch window to desktop %d")
+#define SWITCH_TO_DESKTOP_WINDOW_LONG N_("Switch window to desktop %d")
+
+#define SWITCH_TO_DESKTOP_OPTION(n) \
+ o = &display->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_ ## n]; \
+ o->name = "switch_to_desktop_" #n; \
+ asprintf (&str, SWITCH_TO_DESKTOP_SHORT, n); \
+ o->shortDesc = str; \
+ asprintf (&str, SWITCH_TO_DESKTOP_LONG, n); \
+ o->longDesc = str; \
+ o->type = CompOptionTypeAction; \
+ o->value.action.initiate = switchToDesktop; \
+ o->value.action.terminate = 0; \
+ o->value.action.bell = FALSE; \
+ o->value.action.edgeMask = 0; \
+ o->value.action.state = CompActionStateInitKey; \
+ o->value.action.state |= CompActionStateInitButton; \
+ o->value.action.type = CompBindingTypeNone; \
+ \
+ o = &display->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_ ## n ## _WINDOW]; \
+ o->name = "switch_to_desktop_" #n "_window"; \
+ asprintf (&str, SWITCH_TO_DESKTOP_WINDOW_SHORT, n); \
+ o->shortDesc = str; \
+ asprintf (&str, SWITCH_TO_DESKTOP_WINDOW_LONG, n); \
+ o->longDesc = str; \
+ o->type = CompOptionTypeAction; \
+ o->value.action.initiate = switchWindowToDesktop; \
+ o->value.action.terminate = 0; \
+ o->value.action.bell = FALSE; \
+ o->value.action.edgeMask = 0; \
+ o->value.action.state = CompActionStateInitKey; \
+ o->value.action.state |= CompActionStateInitButton; \
+ o->value.action.type = CompBindingTypeNone
+ SWITCH_TO_DESKTOP_OPTION (1);
+ SWITCH_TO_DESKTOP_OPTION (2);
+ SWITCH_TO_DESKTOP_OPTION (3);
+ SWITCH_TO_DESKTOP_OPTION (4);
+ SWITCH_TO_DESKTOP_OPTION (5);
+ SWITCH_TO_DESKTOP_OPTION (6);
+ SWITCH_TO_DESKTOP_OPTION (7);
+ SWITCH_TO_DESKTOP_OPTION (8);
+ SWITCH_TO_DESKTOP_OPTION (9);
+ SWITCH_TO_DESKTOP_OPTION (10);
+ SWITCH_TO_DESKTOP_OPTION (11);
+ SWITCH_TO_DESKTOP_OPTION (12);
+
+#define SWITCH_TO_DESKTOP_DIRECTION_SHORT N_("Switch To %s Desktop")
+#define SWITCH_TO_DESKTOP_DIRECTION_LONG N_("Switch to %s desktop")
+#define SWITCH_TO_DESKTOP_DIRECTION_WINDOW_SHORT N_("Switch window to " \
+ "%s desktop")
+#define SWITCH_TO_DESKTOP_DIRECTION_WINDOW_LONG N_("Switch window to %s " \
+ "desktop")
+
+#define SWITCH_TO_DESKTOP_DIRECTION_OPTION(sname, dname) \
+ o = &display->opt[COMP_DISPLAY_OPTION_SWITCH_TO_##sname##_DESKTOP]; \
+ o->name = "switch_to_" dname "_desktop"; \
+ asprintf (&str, SWITCH_TO_DESKTOP_DIRECTION_SHORT, dname); \
+ o->shortDesc = str; \
+ asprintf (&str, SWITCH_TO_DESKTOP_DIRECTION_LONG, dname); \
+ o->longDesc = str; \
+ o->type = CompOptionTypeAction; \
+ o->value.action.initiate = switchToDesktopDirection; \
+ o->value.action.terminate = 0; \
+ o->value.action.bell = FALSE; \
+ o->value.action.edgeMask = 0; \
+ o->value.action.state = CompActionStateInitKey; \
+ o->value.action.state |= CompActionStateInitButton; \
+ o->value.action.type = CompBindingTypeNone; \
+ \
+ o = &display->opt[COMP_DISPLAY_OPTION_SWITCH_TO_##sname##_DESKTOP_WINDOW]; \
+ o->name = "switch_to_" dname "_desktop_window"; \
+ asprintf (&str, SWITCH_TO_DESKTOP_DIRECTION_WINDOW_SHORT, dname); \
+ o->shortDesc = str; \
+ asprintf (&str, SWITCH_TO_DESKTOP_DIRECTION_WINDOW_LONG, dname); \
+ o->longDesc = str; \
+ o->type = CompOptionTypeAction; \
+ o->value.action.initiate = switchWindowToDesktopDirection; \
+ o->value.action.terminate = 0; \
+ o->value.action.bell = FALSE; \
+ o->value.action.edgeMask = 0; \
+ o->value.action.state = CompActionStateInitKey; \
+ o->value.action.state |= CompActionStateInitButton; \
+ o->value.action.type = CompBindingTypeNone
+
+ SWITCH_TO_DESKTOP_DIRECTION_OPTION (LEFT, "left");
+ SWITCH_TO_DESKTOP_DIRECTION_OPTION (RIGHT, "right");
+ SWITCH_TO_DESKTOP_DIRECTION_OPTION (UP, "up");
+ SWITCH_TO_DESKTOP_DIRECTION_OPTION (DOWN, "down");
}
CompOption *
@@ -1464,6 +1789,38 @@ setDisplayOption (CompDisplay *display,
case COMP_DISPLAY_OPTION_TOGGLE_WINDOW_MAXIMIZED_HORZ:
case COMP_DISPLAY_OPTION_TOGGLE_WINDOW_MAXIMIZED_VERT:
case COMP_DISPLAY_OPTION_TOGGLE_WINDOW_SHADED:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_2:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_3:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_4:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_5:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_6:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_7:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_8:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_9:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_10:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_11:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_12:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_RIGHT_DESKTOP:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_UP_DESKTOP:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DOWN_DESKTOP:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_2_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_3_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_4_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_5_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_6_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_7_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_8_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_9_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_10_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_11_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_12_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_RIGHT_DESKTOP_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_UP_DESKTOP_WINDOW:
+ case COMP_DISPLAY_OPTION_SWITCH_TO_DOWN_DESKTOP_WINDOW:
if (setDisplayAction (display, o, value))
return TRUE;
break;
@@ -2508,6 +2865,70 @@ addScreenActions (CompDisplay *d, CompScreen *s)
&d->opt[COMP_DISPLAY_OPTION_TOGGLE_WINDOW_MAXIMIZED_VERT].value.action);
addScreenAction (s,
&d->opt[COMP_DISPLAY_OPTION_TOGGLE_WINDOW_SHADED].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_2].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_3].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_4].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_5].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_6].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_7].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_8].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_9].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_10].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_11].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_12].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_RIGHT_DESKTOP].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_UP_DESKTOP].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DOWN_DESKTOP].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_1_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_2_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_3_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_4_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_5_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_6_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_7_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_8_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_9_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_10_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_11_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DESKTOP_12_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_LEFT_DESKTOP_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_RIGHT_DESKTOP_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_UP_DESKTOP_WINDOW].value.action);
+ addScreenAction (s,
+ &d->opt[COMP_DISPLAY_OPTION_SWITCH_TO_DOWN_DESKTOP_WINDOW].value.action);
}
void
diff --git a/src/window.c b/src/window.c
index fb708f7..a901968 100644
--- a/src/window.c
+++ b/src/window.c
@@ -34,6 +34,7 @@
#include <strings.h>
#include <stdlib.h>
#include <stdint.h>
+#include <limits.h>
#include <compiz.h>
@@ -915,6 +916,27 @@ setWindowProp32 (CompDisplay *display,
(unsigned char *) &value32, 1);
}
+Bool
+getWindowPropList (CompDisplay *display,
+ Window id,
+ Atom property,
+ unsigned long **list,
+ unsigned long *nb)
+{
+ Atom actual;
+ int result, format;
+ unsigned long left;
+
+ result = XGetWindowProperty (display->display, id, property,
+ 0L, LONG_MAX, FALSE, XA_CARDINAL, &actual, &format,
+ nb, &left, (unsigned char **)list);
+
+ if (result == Success && *nb && list)
+ return TRUE;
+
+ return FALSE;
+}
+
static void
updateFrameWindow (CompWindow *w)
{
signature.asc
Description: This is a digitally signed message part
_______________________________________________ compiz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/compiz
