[Xfce4-commits] r22954 - xfwm4/trunk/src
Olivier Fourdan
olivier at xfce.org
Wed Aug 30 19:41:29 UTC 2006
Author: olivier
Date: 2006-08-30 19:41:26 +0000 (Wed, 30 Aug 2006)
New Revision: 22954
Modified:
xfwm4/trunk/src/compositor.c
xfwm4/trunk/src/hints.c
xfwm4/trunk/src/hints.h
xfwm4/trunk/src/main.c
Log:
Add support for newest _NET_WM_CM_S<n> property used by gdk_screen_is_composited() in gtk+-2.10.x
Modified: xfwm4/trunk/src/compositor.c
===================================================================
--- xfwm4/trunk/src/compositor.c 2006-08-30 16:47:12 UTC (rev 22953)
+++ xfwm4/trunk/src/compositor.c 2006-08-30 19:41:26 UTC (rev 22954)
@@ -2711,6 +2711,26 @@
#endif /* HAVE_COMPOSITOR */
}
+static void
+compositorSetCMSelection (ScreenInfo *screen_info, Window w)
+{
+ DisplayInfo *display_info;
+ gchar selection[32];
+ Atom a;
+
+ g_return_if_fail (screen_info != NULL);
+
+ display_info = screen_info->display_info;
+ /* Newer EWMH standard property "_NET_WM_CM_S<n>" */
+ g_snprintf (selection, sizeof (selection), "_NET_WM_CM_S%d", screen_info->screen);
+ a = XInternAtom (display_info->dpy, selection, FALSE);
+ setXAtomManagerOwner (display_info, a, screen_info->xroot, w);
+
+ /* Older property "COMPOSITING_MANAGER" */
+ setAtomIdManagerOwner (display_info, COMPOSITING_MANAGER, screen_info->xroot, w);
+}
+
+
gboolean
compositorManageScreen (ScreenInfo *screen_info)
{
@@ -2777,8 +2797,7 @@
screen_info->overlays = 0;
XClearArea (display_info->dpy, screen_info->xroot, 0, 0, 0, 0, TRUE);
- setAtomManagerOwner (display_info, COMPOSITING_MANAGER,
- screen_info->xroot, screen_info->xfwm4_win);
+ compositorSetCMSelection (screen_info, screen_info->xfwm4_win);
return TRUE;
#else
@@ -2856,7 +2875,7 @@
XCompositeUnredirectSubwindows (display_info->dpy, screen_info->xroot,
display_info->composite_mode);
- setAtomManagerOwner (display_info, COMPOSITING_MANAGER, screen_info->xroot, None);
+ compositorSetCMSelection (screen_info, None);
#endif /* HAVE_COMPOSITOR */
}
Modified: xfwm4/trunk/src/hints.c
===================================================================
--- xfwm4/trunk/src/hints.c 2006-08-30 16:47:12 UTC (rev 22953)
+++ xfwm4/trunk/src/hints.c 2006-08-30 19:41:26 UTC (rev 22954)
@@ -1115,30 +1115,29 @@
}
gboolean
-setAtomManagerOwner (DisplayInfo *display_info, int atom_id, Window root, Window w)
+setXAtomManagerOwner (DisplayInfo *display_info, Atom atom, Window root, Window w)
{
XClientMessageEvent ev;
Time server_time;
int status;
-
- g_return_val_if_fail (((atom_id >= 0) && (atom_id < NB_ATOMS)), FALSE);
+
+ g_return_val_if_fail (root != None, FALSE);
+
server_time = myDisplayGetCurrentTime (display_info);
- status = XSetSelectionOwner (display_info->dpy,
- display_info->atoms[atom_id],
- w, server_time);
+ status = XSetSelectionOwner (display_info->dpy, atom, w, server_time);
if ((status == BadAtom) || (status == BadWindow))
{
return FALSE;
}
- if (XGetSelectionOwner (display_info->dpy, display_info->atoms[atom_id]) == w)
+ if (XGetSelectionOwner (display_info->dpy, atom) == w)
{
ev.type = ClientMessage;
- ev.message_type = display_info->atoms[atom_id];
+ ev.message_type = atom;
ev.format = 32;
ev.data.l[0] = server_time;
- ev.data.l[1] = display_info->atoms[atom_id];
+ ev.data.l[1] = atom;
ev.data.l[2] = w;
ev.data.l[3] = 0;
ev.data.l[4] = 0;
@@ -1152,6 +1151,14 @@
return FALSE;
}
+gboolean
+setAtomIdManagerOwner (DisplayInfo *display_info, int atom_id, Window root, Window w)
+{
+ g_return_val_if_fail (((atom_id >= 0) && (atom_id < NB_ATOMS)), FALSE);
+
+ return setXAtomManagerOwner(display_info, display_info->atoms[atom_id], root, w);
+}
+
#ifdef ENABLE_KDE_SYSTRAY_PROXY
gboolean
checkKdeSystrayWindow(DisplayInfo *display_info, Window window)
Modified: xfwm4/trunk/src/hints.h
===================================================================
--- xfwm4/trunk/src/hints.h 2006-08-30 16:47:12 UTC (rev 22953)
+++ xfwm4/trunk/src/hints.h 2006-08-30 19:41:26 UTC (rev 22954)
@@ -178,7 +178,8 @@
gboolean getRGBIconData (DisplayInfo *, Window, unsigned long **, unsigned long *);
gboolean getOpacity (DisplayInfo *, Window, guint *);
gboolean getOpacityLock (DisplayInfo *, Window);
-gboolean setAtomManagerOwner (DisplayInfo *, int, Window , Window);
+gboolean setAtomIdManagerOwner (DisplayInfo *, int, Window , Window);
+gboolean setXAtomManagerOwner (DisplayInfo *, Atom, Window , Window);
#ifdef ENABLE_KDE_SYSTRAY_PROXY
gboolean checkKdeSystrayWindow(DisplayInfo *, Window);
Modified: xfwm4/trunk/src/main.c
===================================================================
--- xfwm4/trunk/src/main.c 2006-08-30 16:47:12 UTC (rev 22953)
+++ xfwm4/trunk/src/main.c 2006-08-30 19:41:26 UTC (rev 22954)
@@ -461,7 +461,7 @@
compositing manager (used by WM tweaks to determine whether or not
show the "compositor" tab.
*/
- setAtomManagerOwner (display_info, XFWM4_COMPOSITING_MANAGER,
+ setAtomIdManagerOwner (display_info, XFWM4_COMPOSITING_MANAGER,
screen_info->xroot, screen_info->xfwm4_win);
}
}
More information about the Xfce4-commits
mailing list