Hi David, When maximizing windows on a different resolution only 70% of the window is maximized.
Ie: on my 1280x1024 screen a window maximized is correct (and does not clobber the desktop panel in KDE, kicker) On my 1600x1200 screen, with no kicker panel, the window is maximized about 70% of the screen only Is this known? Thanks, Shawn. ----- Original Message ---- From: David Reveman <[EMAIL PROTECTED]> To: Mike Dransfield <[EMAIL PROTECTED]> Cc: [email protected] Sent: Wednesday, November 8, 2006 2:57:38 PM Subject: Re: [compiz] [PATCH] Edge buttons The "button press on edge" functionality should be working OK in the latest code. Let me know if you have any problems with it. I might include the edge size changes if you provide a patch that only include those changes. -David On Wed, 2006-10-25 at 18:20 +0100, Mike Dransfield wrote: > Here are my patches to add edge + button functionality. > > I still feel that there is a problem with gconf, but I have just made it > so that the edge button functionality works. > > I have included a patch for gconf to display AnyButton if it is set > to 0. There is also a patch to make the edge size configurable > because 1 pixel was too small and the mouse keeps slipping off > when using it for the switcher. > > Hopefully these are acceptable, please let me know if they aren't. > plain text document attachment (edgebutton-compiz.h.diff) > diff --git a/include/compiz.h b/include/compiz.h > index 6161f99..8e32f2d 100644 > --- a/include/compiz.h > +++ b/include/compiz.h > @@ -343,7 +343,8 @@ struct _CompAction { > > Bool bell; > > - unsigned int edgeMask; > + unsigned int edgeMask; > + int edgeButton; > }; > > typedef struct { > @@ -751,6 +752,8 @@ struct _CompDisplay { > > HandleEventProc handleEvent; > > + unsigned int mouseOnEdge; > + > CompPrivate *privates; > }; > > @@ -1125,7 +1128,8 @@ #define COMP_SCREEN_OPTION_OPACITY_STEP > #define COMP_SCREEN_OPTION_UNREDIRECT_FS 6 > #define COMP_SCREEN_OPTION_DEFAULT_ICON 7 > #define COMP_SCREEN_OPTION_SYNC_TO_VBLANK 8 > -#define COMP_SCREEN_OPTION_NUM 9 > +#define COMP_SCREEN_OPTION_EDGE_SIZE 9 > +#define COMP_SCREEN_OPTION_NUM 10 > > #ifndef GLX_EXT_texture_from_pixmap > #define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 > plain text document attachment (edgebutton-event.c.diff) > diff --git a/src/event.c b/src/event.c > index 5c4610d..b36468b 100644 > --- a/src/event.c > +++ b/src/event.c > @@ -260,6 +260,7 @@ triggerButtonPressBindings (CompDisplay > unsigned int modMask = REAL_MOD_MASK & ~d->ignoredModMask; > unsigned int bindMods; > > + > while (nOption--) > { > if (isInitiateBinding (option, CompBindingTypeButton, state, &action)) > @@ -272,6 +273,15 @@ triggerButtonPressBindings (CompDisplay > if ((*action->initiate) (d, action, state, > argument, nArgument)) > return TRUE; > + > + } > + else if (option->value.action.edgeMask && > + (option->value.action.edgeMask & d->mouseOnEdge) && > + (event->xbutton.button == option->value.action.edgeButton)) > + { > + if ((*action->initiate) (d, action, state, > + argument, nArgument)) > + return TRUE; > } > } > > @@ -553,6 +563,10 @@ isEdgeEnterAction (CompOption *opti > if (!isEdgeAction (option, state, edge)) > return FALSE; > > + /* block this edge action because there is an edgeButton */ > + if (option->value.action.edgeButton >= 0) > + return FALSE; > + > if (!option->value.action.initiate) > return FALSE; > > @@ -802,6 +816,8 @@ handleActionEvent (CompDisplay *d, > } > } > > + d->mouseOnEdge = 0; > + > edgeWindow = None; > > o[0].value.i = event->xcrossing.window; > @@ -844,6 +860,8 @@ handleActionEvent (CompDisplay *d, > > if (edge) > { > + d->mouseOnEdge = edge; > + > state = CompActionStateInitEdge; > > edgeWindow = event->xcrossing.window; > plain text document attachment (edgebutton-gconf.c.diff) > diff --git a/plugins/gconf.c b/plugins/gconf.c > index ea68ce3..175a4ac 100644 > --- a/plugins/gconf.c > +++ b/plugins/gconf.c > @@ -209,7 +209,7 @@ gconfSetOption (CompDisplay *d, > gconf_value_free (gvalue); > break; > case CompOptionTypeAction: { > - gchar *key1, *key2, *key3, *key4; > + gchar *key1, *key2, *key3, *key4, *key5; > GSList *node, *list = NULL; > GConfValue *gv; > int i; > @@ -218,6 +218,7 @@ gconfSetOption (CompDisplay *d, > key2 = g_strdup_printf ("%s_%s", key, "button"); > key3 = g_strdup_printf ("%s_%s", key, "bell"); > key4 = g_strdup_printf ("%s_%s", key, "edge"); > + key5 = g_strdup_printf ("%s_%s", key, "edge_button"); > > gvalue = gconf_value_new (GCONF_VALUE_STRING); > > @@ -243,6 +244,8 @@ gconfSetOption (CompDisplay *d, > > gconf_value_free (gvalue); > > + > + > gvalue = gconf_value_new (GCONF_VALUE_BOOL); > gconf_value_set_bool (gvalue, o->value.action.bell); > existingValue = gconf_client_get (gd->client, key3, NULL); > @@ -279,10 +282,21 @@ gconfSetOption (CompDisplay *d, > g_slist_free (list); > gconf_value_free (gvalue); > > + > + existingValue = gconf_client_get (gd->client, key5, NULL); > + o->value.action.edgeButton = gconf_value_get_int(existingValue); > + gvalue = gconf_value_new (GCONF_VALUE_INT); > + gconf_value_set_int (gvalue, o->value.action.edgeButton); > + if (!existingValue || gconf_value_compare (existingValue, gvalue)) > + gconf_client_set (gd->client, key5, gvalue, NULL); > + > + gconf_value_free (gvalue); > + > g_free (key1); > g_free (key2); > g_free (key3); > g_free (key4); > + g_free (key5); > } break; > case CompOptionTypeList: { > GConfValueType type; > @@ -455,11 +469,10 @@ gconfGetOptionValue (CompDisplay *d, > } > > optionName = g_strdup (ptr); > - > o = compFindOption (option, nOption, optionName, 0); > if (!o) > { > - static int tail[] = { 4, 5, 7 }; > + static int tail[] = { 4, 5, 7, 12 }; > int i = 0; > > while (i < sizeof (tail) / sizeof (tail[0]) && strlen (ptr) > tail[i]) > @@ -575,6 +588,14 @@ gconfGetOptionValue (CompDisplay *d, > status = TRUE; > } > else if (o->type == CompOptionTypeAction && > + gvalue->type == GCONF_VALUE_INT) > + { > + value = o->value; > + value.action.edgeButton = gconf_value_get_int (gvalue); > + value.action.type |= CompBindingTypeButton; > + status = TRUE; > + } > + else if (o->type == CompOptionTypeAction && > gvalue->type == GCONF_VALUE_LIST) > { > if (gconf_value_get_list_type (gvalue) == GCONF_VALUE_STRING) > @@ -677,7 +698,7 @@ gconfInitOption (CompDisplay *d, > > if (o->type == CompOptionTypeAction) > { > - static gchar *tail[] = { "key", "button", "bell", "edge" }; > + static gchar *tail[] = { "key", "button", "bell", "edge", "edge_button" > }; > gchar *key1; > int i; > > plain text document attachment (edgebutton-gconf-dump.c.diff) > diff --git a/plugins/gconf-dump.c b/plugins/gconf-dump.c > index f5c38f4..2601be2 100644 > --- a/plugins/gconf-dump.c > +++ b/plugins/gconf-dump.c > @@ -87,6 +87,7 @@ static gchar *actionSufix[] = { > "button", > "bell", > "edge", > + "edge_button", > NULL > }; > > @@ -404,6 +405,11 @@ gconfDumpToSchema (CompDisplay *d, > gconfPrintf (3, "<type>bool</type>\n"); > value = g_strdup (o->value.action.bell ? "true" : "false"); > } > + else if (strcmp (name + len - 11, "edge_button") == 0) > + { > + gconfPrintf (3, "<type>int</type>\n"); > + value = g_strdup_printf ("%d", o->value.action.edgeButton); > + } > else > { > char *tmp1, *tmp2 = 0; > plain text document attachment (edgebutton-option.c.diff) > diff --git a/src/option.c b/src/option.c > index fe2e179..33c6aad 100644 > --- a/src/option.c > +++ b/src/option.c > @@ -196,7 +196,8 @@ compSetActionOption (CompOption *op > > if (value->action.type == action->type && > value->action.bell == action->bell && > - value->action.edgeMask == action->edgeMask) > + value->action.edgeMask == action->edgeMask && > + value->action.edgeButton == action->edgeButton) > { > Bool equal = TRUE; > > @@ -214,6 +215,7 @@ compSetActionOption (CompOption *op > equal = FALSE; > } > > + > if (equal) > return FALSE; > } > @@ -507,10 +509,21 @@ buttonBindingToString (CompDisplay > char *binding; > char buttonStr[256]; > > + if (button->button < 1) > + button->modifiers = 0; > + > binding = modifiersToString (d, button->modifiers); > > - snprintf (buttonStr, 256, "Button%d", button->button); > - binding = stringAppend (binding, buttonStr); > + if (button->button == 0) > + { > + sprintf (buttonStr, "AnyButton"); > + binding = stringAppend (binding, buttonStr); > + } > + else if (button->button > 0) > + { > + snprintf (buttonStr, 256, "Button%d", button->button); > + binding = stringAppend (binding, buttonStr); > + } > > return binding; > } > @@ -604,6 +617,13 @@ stringToButtonBinding (CompDisplay *d, > return TRUE; > } > } > + else if (strcmp (binding, "AnyButton") == 0) > + { > + button->button = 0; > + button->modifiers = mods; > + > + return TRUE; > + } > > return FALSE; > } > plain text document attachment (edgebutton-rotate.c.diff) > diff --git a/plugins/rotate.c b/plugins/rotate.c > index e70ecaa..55ec325 100644 > --- a/plugins/rotate.c > +++ b/plugins/rotate.c > @@ -1750,6 +1750,7 @@ rotateDisplayInitOptions (RotateDisplay > o->value.action.terminate = 0; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 0; > + o->value.action.edgeButton = -1; > o->value.action.state = CompActionStateInitEdge; > o->value.action.state |= CompActionStateInitEdgeDnd; > o->value.action.state |= CompActionStateInitKey; > @@ -1769,11 +1770,13 @@ rotateDisplayInitOptions (RotateDisplay > o->value.action.terminate = 0; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 0; > + o->value.action.edgeButton = -1; > o->value.action.state = CompActionStateInitEdge; > o->value.action.state |= CompActionStateInitEdgeDnd; > o->value.action.state |= CompActionStateInitKey; > o->value.action.state |= CompActionStateInitButton; > o->value.action.type = CompBindingTypeKey; > + o->value.action.button.button = 0; > o->value.action.key.modifiers = ROTATE_RIGHT_MODIFIERS_DEFAULT; > o->value.action.key.keycode = > XKeysymToKeycode (display, > @@ -1789,6 +1792,7 @@ rotateDisplayInitOptions (RotateDisplay > o->value.action.terminate = 0; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 0; > + o->value.action.edgeButton = -1; > o->value.action.state = CompActionStateInitEdge; > o->value.action.state |= CompActionStateInitEdgeDnd; > o->value.action.state |= CompActionStateInitKey; > @@ -1809,6 +1813,7 @@ rotateDisplayInitOptions (RotateDisplay > o->value.action.terminate = 0; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 0; > + o->value.action.edgeButton = -1; > o->value.action.state = CompActionStateInitEdge; > o->value.action.state |= CompActionStateInitEdgeDnd; > o->value.action.state |= CompActionStateInitKey; > @@ -1837,6 +1842,7 @@ #define ROTATE_TO_OPTION(n) \ > o->value.action.terminate = 0; \ > o->value.action.bell = FALSE; \ > o->value.action.edgeMask = 0; \ > + o->value.action.edgeButton = -1; \ > o->value.action.state = CompActionStateInitKey; \ > o->value.action.state |= CompActionStateInitButton; \ > o->value.action.type = CompBindingTypeNone; \ > @@ -1852,6 +1858,7 @@ #define ROTATE_TO_OPTION(n) \ > o->value.action.terminate = 0; \ > o->value.action.bell = FALSE; \ > o->value.action.edgeMask = 0; \ > + o->value.action.edgeButton = -1; \ > o->value.action.state = CompActionStateInitKey; \ > o->value.action.state |= CompActionStateInitButton; \ > o->value.action.type = CompBindingTypeNone > @@ -1878,6 +1885,7 @@ #define ROTATE_TO_OPTION(n) \ > o->value.action.terminate = 0; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 0; > + o->value.action.edgeButton = -1; > o->value.action.state = 0; > o->value.action.type = CompBindingTypeNone; > > @@ -1890,6 +1898,7 @@ #define ROTATE_TO_OPTION(n) \ > o->value.action.terminate = 0; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 0; > + o->value.action.edgeButton = -1; > o->value.action.state = 0; > o->value.action.type = CompBindingTypeNone; > > @@ -1903,6 +1912,7 @@ #define ROTATE_TO_OPTION(n) \ > o->value.action.terminate = rotateFlipTerminate; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 1 << SCREEN_EDGE_LEFT; > + o->value.action.edgeButton = -1; > o->value.action.state = CompActionStateInitEdge; > o->value.action.state |= CompActionStateInitEdgeDnd; > o->value.action.state |= CompActionStateInitKey; > @@ -1919,6 +1929,7 @@ #define ROTATE_TO_OPTION(n) \ > o->value.action.terminate = rotateFlipTerminate; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 1 << SCREEN_EDGE_RIGHT; > + o->value.action.edgeButton = -1; > o->value.action.state = CompActionStateInitEdge; > o->value.action.state |= CompActionStateInitEdgeDnd; > o->value.action.state |= CompActionStateInitKey; > plain text document attachment (edgebutton-scale.c.diff) > diff --git a/plugins/scale.c b/plugins/scale.c > index 7095c2d..31864be 100644 > --- a/plugins/scale.c > +++ b/plugins/scale.c > @@ -1075,11 +1075,14 @@ scaleInitiate (CompDisplay *d, > damageScreen (s); > } > > - if (state & CompActionStateInitButton) > - action->state |= CompActionStateTermButton; > + if (!(action->edgeMask & d->mouseOnEdge)) > + { > + if (state & CompActionStateInitButton) > + action->state |= CompActionStateTermButton; > > - if (state & CompActionStateInitKey) > - action->state |= CompActionStateTermKey; > + if (state & CompActionStateInitKey) > + action->state |= CompActionStateTermKey; > + } > } > } > > @@ -1372,9 +1375,11 @@ scaleDisplayInitOptions (ScaleDisplay *s > o->value.action.terminate = scaleTerminate; > o->value.action.bell = FALSE; > o->value.action.edgeMask = (1 << SCREEN_EDGE_TOPRIGHT); > - o->value.action.state = CompActionStateInitEdge; > + o->value.action.edgeButton = -1; > o->value.action.type = CompBindingTypeKey; > + o->value.action.state = CompActionStateInitEdge; > o->value.action.state |= CompActionStateInitKey; > + o->value.action.state |= CompActionStateInitButton; > o->value.action.key.modifiers = SCALE_INITIATE_MODIFIERS_DEFAULT; > o->value.action.key.keycode = > XKeysymToKeycode (display, > plain text document attachment (edgebutton-screen.c.diff) > diff --git a/src/screen.c b/src/screen.c > index be98004..5f92f53 100644 > --- a/src/screen.c > +++ b/src/screen.c > @@ -67,6 +67,10 @@ #define DEFAULT_ICON_DEFAULT "icon.png" > > #define SYNC_TO_VBLANK_DEFAULT TRUE > > +#define SCREEN_EDGE_SIZE_DEFAULT 1 > +#define SCREEN_EDGE_SIZE_MIN 1 > +#define SCREEN_EDGE_SIZE_MAX 50 > + > #define NUM_OPTIONS(s) (sizeof ((s)->opt) / sizeof (CompOption)) > > static int > @@ -164,6 +168,59 @@ updateDefaultIcon (CompScreen *screen) > return TRUE; > } > > +static void > +updateScreenEdges (CompScreen *s) > +{ > + > + int edgeSize = 0; > + > + edgeSize = s->opt[COMP_SCREEN_OPTION_EDGE_SIZE].value.i; > + if (edgeSize < 0) > + edgeSize = 1; > + > + struct screenEdgeGeometry { > + int xw, x0; > + int yh, y0; > + int ww, w0; > + int hh, h0; > + } geometry[SCREEN_EDGE_NUM] = { > + { 0, 0, 0, edgeSize, > + 0, edgeSize, 1, (-2*edgeSize) }, /* left */ > + > + { 1, (-1*edgeSize), 0, edgeSize, > + 0, edgeSize, 1, (-2*edgeSize)}, /* right */ > + > + { 0, edgeSize, 0, 0, > + 1, (-2*edgeSize), 0, edgeSize }, /* top */ > + > + { 0, edgeSize, 1, (-1*edgeSize), > + 1, (-2*edgeSize), 0, edgeSize }, /* bottom */ > + > + { 0, 0, 0, 0, > + 0, edgeSize, 0, edgeSize }, /* top-left */ > + > + { 1, (-1*edgeSize), 0, 0, > + 0, edgeSize, 0, edgeSize }, /* top-right */ > + > + { 0, 0, 1, (-1*edgeSize), > + 0, edgeSize, 0, edgeSize }, /* bottom-left */ > + > + { 1, (-1*edgeSize), 1, (-1*edgeSize), > + 0, edgeSize, 0, edgeSize } /* bottom-right */ > + }; > + int i; > + > + for (i = 0; i < SCREEN_EDGE_NUM; i++) > + { > + if (s->screenEdge[i].id) > + XMoveResizeWindow (s->display->display, s->screenEdge[i].id, > + geometry[i].xw * s->width + geometry[i].x0, > + geometry[i].yh * s->height + geometry[i].y0, > + geometry[i].ww * s->width + geometry[i].w0, > + geometry[i].hh * s->height + geometry[i].h0); > + } > +} > + > CompOption * > compGetScreenOptions (CompScreen *screen, > int *count) > @@ -192,6 +249,13 @@ setScreenOption (CompScreen *screen > if (compSetBoolOption (o, value)) > return TRUE; > break; > + case COMP_SCREEN_OPTION_EDGE_SIZE: > + if (compSetIntOption (o, value)) > + { > + updateScreenEdges (screen); > + return TRUE; > + } > + break; > case COMP_SCREEN_OPTION_REFRESH_RATE: > if (screen->opt[COMP_SCREEN_OPTION_DETECT_REFRESH_RATE].value.b) > return FALSE; > @@ -338,6 +402,15 @@ compScreenInitOptions (CompScreen *scree > "blanking period"); > o->type = CompOptionTypeBool; > o->value.b = SYNC_TO_VBLANK_DEFAULT; > + > + o = &screen->opt[COMP_SCREEN_OPTION_EDGE_SIZE]; > + o->name = "edge_size"; > + o->shortDesc = N_("Screen Edge Size"); > + o->longDesc = N_("Screen Edge Size"); > + o->type = CompOptionTypeInt; > + o->value.i = SCREEN_EDGE_SIZE_DEFAULT; > + o->rest.i.min = SCREEN_EDGE_SIZE_MIN; > + o->rest.i.max = SCREEN_EDGE_SIZE_MAX; > } > > static void > @@ -461,36 +534,6 @@ compScreenSnEvent (SnMonitorEvent *event > } > } > > -static void > -updateScreenEdges (CompScreen *s) > -{ > - struct screenEdgeGeometry { > - int xw, x0; > - int yh, y0; > - int ww, w0; > - int hh, h0; > - } geometry[SCREEN_EDGE_NUM] = { > - { 0, 0, 0, 1, 0, 1, 1, -2 }, /* left */ > - { 1, -1, 0, 1, 0, 1, 1, -2 }, /* right */ > - { 0, 1, 0, 0, 1, -2, 0, 1 }, /* top */ > - { 0, 1, 1, -1, 1, -2, 0, 1 }, /* bottom */ > - { 0, 0, 0, 0, 0, 1, 0, 1 }, /* top-left */ > - { 1, -1, 0, 0, 0, 1, 0, 1 }, /* top-right */ > - { 0, 0, 1, -1, 0, 1, 0, 1 }, /* bottom-left */ > - { 1, -1, 1, -1, 0, 1, 0, 1 } /* bottom-right */ > - }; > - int i; > - > - for (i = 0; i < SCREEN_EDGE_NUM; i++) > - { > - if (s->screenEdge[i].id) > - XMoveResizeWindow (s->display->display, s->screenEdge[i].id, > - geometry[i].xw * s->width + geometry[i].x0, > - geometry[i].yh * s->height + geometry[i].y0, > - geometry[i].ww * s->width + geometry[i].w0, > - geometry[i].hh * s->height + geometry[i].h0); > - } > -} > > static void > frustum (GLfloat left, > plain text document attachment (edgebutton-switcher.c.diff) > diff --git a/plugins/switcher.c b/plugins/switcher.c > index 998310f..2d02a9b 100644 > --- a/plugins/switcher.c > +++ b/plugins/switcher.c > @@ -931,11 +931,14 @@ switchNext (CompDisplay *d, > { > switchInitiate (s, FALSE); > > - if (state & CompActionStateInitKey) > - action->state |= CompActionStateTermKey; > + if (!(action->edgeMask & d->mouseOnEdge)) > + { > + if (state & CompActionStateInitKey) > + action->state |= CompActionStateTermKey; > > - if (state & CompActionStateInitButton) > - action->state |= CompActionStateTermButton; > + if (state & CompActionStateInitButton) > + action->state |= CompActionStateTermButton; > + } > } > > switchToWindow (s, TRUE); > @@ -965,11 +968,14 @@ switchPrev (CompDisplay *d, > { > switchInitiate (s, FALSE); > > - if (state & CompActionStateInitKey) > - action->state |= CompActionStateTermKey; > + if (!(action->edgeMask & d->mouseOnEdge)) > + { > + if (state & CompActionStateInitKey) > + action->state |= CompActionStateTermKey; > > - if (state & CompActionStateInitButton) > - action->state |= CompActionStateTermButton; > + if (state & CompActionStateInitButton) > + action->state |= CompActionStateTermButton; > + } > } > > switchToWindow (s, FALSE); > @@ -1871,12 +1877,15 @@ switchDisplayInitOptions (SwitchDisplay > o->value.action.initiate = switchNext; > o->value.action.terminate = switchTerminate; > o->value.action.bell = FALSE; > - o->value.action.edgeMask = 0; > + o->value.action.edgeMask = (1 << SCREEN_EDGE_TOP); > + o->value.action.edgeButton = 5; > o->value.action.state = CompActionStateInitKey; > o->value.action.state |= CompActionStateInitButton; > + o->value.action.state |= CompActionStateInitEdge; > + o->value.action.state |= CompActionStateTermEdge; > o->value.action.type = CompBindingTypeKey; > o->value.action.key.modifiers = SWITCH_NEXT_MODIFIERS_DEFAULT; > - o->value.action.key.keycode = > + o->value.action.key.keycode = > XKeysymToKeycode (display, > XStringToKeysym (SWITCH_NEXT_KEY_DEFAULT)); > > @@ -1889,9 +1898,12 @@ switchDisplayInitOptions (SwitchDisplay > o->value.action.initiate = switchPrev; > o->value.action.terminate = switchTerminate; > o->value.action.bell = FALSE; > - o->value.action.edgeMask = 0; > + o->value.action.edgeMask = (1 << SCREEN_EDGE_TOP); > + o->value.action.edgeButton = 4; > o->value.action.state = CompActionStateInitKey; > o->value.action.state |= CompActionStateInitButton; > + o->value.action.state |= CompActionStateInitEdge; > + o->value.action.state |= CompActionStateTermEdge; > o->value.action.type = CompBindingTypeKey; > o->value.action.key.modifiers = SWITCH_PREV_MODIFIERS_DEFAULT; > o->value.action.key.keycode = > @@ -1909,6 +1921,7 @@ switchDisplayInitOptions (SwitchDisplay > o->value.action.terminate = switchTerminate; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 0; > + o->value.action.edgeButton = -1; > o->value.action.state = CompActionStateInitKey; > o->value.action.state |= CompActionStateInitButton; > o->value.action.type = CompBindingTypeKey; > @@ -1928,6 +1941,7 @@ switchDisplayInitOptions (SwitchDisplay > o->value.action.terminate = switchTerminate; > o->value.action.bell = FALSE; > o->value.action.edgeMask = 0; > + o->value.action.edgeButton = -1; > o->value.action.state = CompActionStateInitKey; > o->value.action.state |= CompActionStateInitButton; > o->value.action.type = CompBindingTypeKey; > _______________________________________________ > compiz mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/compiz _______________________________________________ compiz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/compiz _______________________________________________ compiz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/compiz
