[Xfce4-commits] r23120 - xfwm4/trunk/src
Olivier Fourdan
olivier at xfce.org
Sun Sep 10 08:45:23 UTC 2006
Author: olivier
Date: 2006-09-10 08:45:19 +0000 (Sun, 10 Sep 2006)
New Revision: 23120
Modified:
xfwm4/trunk/src/client.c
xfwm4/trunk/src/client.h
xfwm4/trunk/src/events.c
xfwm4/trunk/src/screen.c
xfwm4/trunk/src/screen.h
xfwm4/trunk/src/settings.c
Log:
Grab keys on root instead of each client window, that saves a *lot* of grabs, makes the code simpler and also fix the keyboard shortcuts not working on shaded windows (Bug #2291).
Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c 2006-09-09 23:38:34 UTC (rev 23119)
+++ xfwm4/trunk/src/client.c 2006-09-10 08:45:19 UTC (rev 23120)
@@ -238,11 +238,6 @@
{
unsigned long configure_flags = 0L;
- if (mask & UPDATE_KEY_GRABS)
- {
- clientUngrabKeys (c);
- clientGrabKeys (c);
- }
if (mask & UPDATE_BUTTON_GRABS)
{
clientUngrabButtons (c);
@@ -304,87 +299,6 @@
}
void
-clientGrabKeys (Client * c)
-{
- ScreenInfo *screen_info;
-
- g_return_if_fail (c != NULL);
- TRACE ("entering clientGrabKeys");
- TRACE ("grabbing keys for client \"%s\" (0x%lx)", c->name, c->window);
-
- screen_info = c->screen_info;
-
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_ADD_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_CLOSE_WINDOW], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_CYCLE_WINDOWS], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_DEL_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_HIDE_WINDOW], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_LOWER_WINDOW], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MAXIMIZE_HORIZ], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MAXIMIZE_VERT], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MAXIMIZE_WINDOW], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_DOWN], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_LEFT], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_NEXT_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_PREV_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_RIGHT], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_UP], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_1], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_2], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_3], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_4], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_5], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_6], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_7], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_8], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_9], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_10], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_11], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_WORKSPACE_12], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_NEXT_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_PREV_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RAISE_WINDOW], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RESIZE_DOWN], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RESIZE_LEFT], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RESIZE_RIGHT], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RESIZE_UP], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHADE_WINDOW], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_STICK_WINDOW], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHOW_DESKTOP], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_TOGGLE_FULLSCREEN], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_1], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_2], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_3], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_4], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_5], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_6], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_7], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_8], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_9], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_10], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_11], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_WORKSPACE_12], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_UP_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_DOWN_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_LEFT_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_RIGHT_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_UP_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_DOWN_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_LEFT_WORKSPACE], c->window);
- grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_RIGHT_WORKSPACE], c->window);
-}
-
-void
-clientUngrabKeys (Client * c)
-{
- g_return_if_fail (c != NULL);
- TRACE ("entering clientUngrabKeys");
- TRACE ("ungrabing keys for client \"%s\" (0x%lx)", c->name, c->window);
-
- ungrabKeys (clientGetXDisplay (c), c->window);
-}
-
-void
clientGrabButtons (Client * c)
{
ScreenInfo *screen_info;
@@ -396,7 +310,7 @@
screen_info = c->screen_info;
if (screen_info->params->easy_click)
{
- grabButton(clientGetXDisplay (c), AnyButton, screen_info->params->easy_click, c->window);
+ grabButton(clientGetXDisplay (c), AnyButton, screen_info->params->easy_click, c->window);
}
}
@@ -1789,7 +1703,6 @@
clientAddToList (c);
clientSetNetActions (c);
- clientGrabKeys (c);
clientGrabButtons(c);
/* Initialize per client menu button pixmap */
@@ -1918,7 +1831,6 @@
myDisplayGrabServer (display_info);
gdk_error_trap_push ();
- clientUngrabKeys (c);
clientUngrabButtons (c);
XUnmapWindow (display_info->dpy, c->frame);
clientGravitate (c, REMOVE);
@@ -4405,7 +4317,7 @@
{
return EVENT_FILTER_CONTINUE;
/* will never be executed */
- /* gtk_main_quit (); */
+ /* gtk_main_quit (); */
}
c = passdata->c;
Modified: xfwm4/trunk/src/client.h
===================================================================
--- xfwm4/trunk/src/client.h 2006-09-09 23:38:34 UTC (rev 23119)
+++ xfwm4/trunk/src/client.h 2006-09-10 08:45:19 UTC (rev 23120)
@@ -68,14 +68,12 @@
#define INCLUDE_SKIP_TASKBAR (1<<5)
#define NO_UPDATE_FLAG 0
-#define UPDATE_KEY_GRABS (1<<0)
-#define UPDATE_BUTTON_GRABS (1<<1)
-#define UPDATE_FRAME (1<<2)
-#define UPDATE_GRAVITY (1<<3)
-#define UPDATE_MAXIMIZE (1<<4)
-#define UPDATE_CACHE (1<<5)
-#define UPDATE_ALL (UPDATE_KEY_GRABS | \
- UPDATE_BUTTON_GRABS | \
+#define UPDATE_BUTTON_GRABS (1<<0)
+#define UPDATE_FRAME (1<<1)
+#define UPDATE_GRAVITY (1<<2)
+#define UPDATE_MAXIMIZE (1<<3)
+#define UPDATE_CACHE (1<<4)
+#define UPDATE_ALL (UPDATE_BUTTON_GRABS | \
UPDATE_FRAME | \
UPDATE_GRAVITY | \
UPDATE_MAXIMIZE | \
@@ -163,9 +161,9 @@
WINDOW_DOCK)
/* Which bits of opacity are applied */
-#define OPACITY_MOVE (1<<0)
-#define OPACITY_RESIZE (1<<1)
-#define OPACITY_INACTIVE (1<<2)
+#define OPACITY_MOVE (1<<0)
+#define OPACITY_RESIZE (1<<1)
+#define OPACITY_INACTIVE (1<<2)
/* Convenient macros */
#define FLAG_TEST(flag,bits) (flag & (bits))
@@ -298,8 +296,6 @@
void clientInstallColormaps (Client *);
void clientUpdateColormaps (Client *);
void clientUpdateAllFrames (ScreenInfo *, gboolean);
-void clientGrabKeys (Client *);
-void clientUngrabKeys (Client *);
void clientGrabButtons (Client *);
void clientUngrabButtons (Client *);
Client *clientGetFromWindow (ScreenInfo *, Window, int);
Modified: xfwm4/trunk/src/events.c
===================================================================
--- xfwm4/trunk/src/events.c 2006-09-09 23:38:34 UTC (rev 23119)
+++ xfwm4/trunk/src/events.c 2006-09-10 08:45:19 UTC (rev 23120)
@@ -2146,7 +2146,7 @@
loadSettings (screen_info);
/* ...then update all frames grabs... */
- clientUpdateAllFrames (screen_info, UPDATE_BUTTON_GRABS | UPDATE_KEY_GRABS);
+ clientUpdateAllFrames (screen_info, UPDATE_BUTTON_GRABS);
/* ...and regrab the keys we have on the root win... */
myScreenGrabKeys (screen_info);
Modified: xfwm4/trunk/src/screen.c
===================================================================
--- xfwm4/trunk/src/screen.c 2006-09-09 23:38:34 UTC (rev 23119)
+++ xfwm4/trunk/src/screen.c 2006-09-10 08:45:19 UTC (rev 23120)
@@ -394,14 +394,57 @@
{
Display *dpy;
+ TRACE ("entering myScreenUnrabKeys");
+ g_return_if_fail (screen_info != NULL);
+
dpy = myScreenGetXDisplay (screen_info);
- ungrabKeys (dpy, screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_CLOSE_WINDOW], screen_info->xroot);
grabKey (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_DEL_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_DOWN_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_HIDE_WINDOW], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_LEFT_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_LOWER_WINDOW], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MAXIMIZE_HORIZ], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MAXIMIZE_VERT], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MAXIMIZE_WINDOW], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_DOWN], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_DOWN_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_LEFT], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_LEFT_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_NEXT_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_PREV_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_RIGHT], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_RIGHT_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_UP], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_UP_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_1], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_2], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_3], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_4], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_5], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_6], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_7], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_8], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_9], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_10], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_11], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_12], screen_info->xroot);
grabKey (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], screen_info->xroot);
grabKey (dpy, &screen_info->params->keys[KEY_PREV_WORKSPACE], screen_info->xroot);
- grabKey (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], screen_info->xroot);
- grabKey (dpy, &screen_info->params->keys[KEY_DEL_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_RAISE_WINDOW], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_RESIZE_DOWN], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_RESIZE_LEFT], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_RESIZE_RIGHT], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_RESIZE_UP], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_RIGHT_WORKSPACE], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHADE_WINDOW], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHOW_DESKTOP], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_STICK_WINDOW], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_TOGGLE_FULLSCREEN], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_UP_WORKSPACE], screen_info->xroot);
grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_1], screen_info->xroot);
grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_2], screen_info->xroot);
grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_3], screen_info->xroot);
@@ -411,10 +454,20 @@
grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_7], screen_info->xroot);
grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_8], screen_info->xroot);
grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_9], screen_info->xroot);
- grabKey (dpy, &screen_info->params->keys[KEY_UP_WORKSPACE], screen_info->xroot);
- grabKey (dpy, &screen_info->params->keys[KEY_DOWN_WORKSPACE], screen_info->xroot);
- grabKey (dpy, &screen_info->params->keys[KEY_LEFT_WORKSPACE], screen_info->xroot);
- grabKey (dpy, &screen_info->params->keys[KEY_RIGHT_WORKSPACE], screen_info->xroot);
- grabKey (dpy, &screen_info->params->keys[KEY_SHOW_DESKTOP], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_10], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_11], screen_info->xroot);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_12], screen_info->xroot);
}
+void
+myScreenUngrabKeys (ScreenInfo *screen_info)
+{
+ Display *dpy;
+
+ TRACE ("entering myScreenUnrabKeys");
+ g_return_if_fail (screen_info != NULL);
+
+ dpy = myScreenGetXDisplay (screen_info);
+ ungrabKeys (dpy, screen_info->xroot);
+}
+
Modified: xfwm4/trunk/src/screen.h
===================================================================
--- xfwm4/trunk/src/screen.h 2006-09-09 23:38:34 UTC (rev 23119)
+++ xfwm4/trunk/src/screen.h 2006-09-10 08:45:19 UTC (rev 23120)
@@ -171,4 +171,5 @@
unsigned int myScreenUngrabPointer (ScreenInfo *,
Time);
void myScreenGrabKeys (ScreenInfo *);
+void myScreenUngrabKeys (ScreenInfo *);
#endif /* INC_SCREEN_H */
Modified: xfwm4/trunk/src/settings.c
===================================================================
--- xfwm4/trunk/src/settings.c 2006-09-09 23:38:34 UTC (rev 23119)
+++ xfwm4/trunk/src/settings.c 2006-09-10 08:45:19 UTC (rev 23120)
@@ -337,7 +337,7 @@
{
if (!strcmp (name, "Xfwm/KeyThemeName"))
{
- reloadScreenSettings (screen_info, UPDATE_KEY_GRABS);
+ reloadScreenSettings (screen_info, NO_UPDATE_FLAG);
}
}
break;
@@ -1255,6 +1255,7 @@
parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_11], getValue ("workspace_11_key", rc));
parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_12], getValue ("workspace_12_key", rc));
+ myScreenUngrabKeys (screen_info);
myScreenGrabKeys (screen_info);
return TRUE;
More information about the Xfce4-commits
mailing list