[Xfce4-commits] r25369 - xfwm4/trunk/src
Olivier Fourdan
olivier at xfce.org
Mon Apr 2 21:19:01 CEST 2007
Author: olivier
Date: 2007-04-02 19:19:01 +0000 (Mon, 02 Apr 2007)
New Revision: 25369
Modified:
xfwm4/trunk/src/display.c
xfwm4/trunk/src/display.h
xfwm4/trunk/src/frame.c
Log:
Add support for shape input with XShape extension 1.1 (Bug #3092)
Modified: xfwm4/trunk/src/display.c
===================================================================
--- xfwm4/trunk/src/display.c 2007-04-02 17:59:39 UTC (rev 25368)
+++ xfwm4/trunk/src/display.c 2007-04-02 19:19:01 UTC (rev 25369)
@@ -182,9 +182,7 @@
myDisplayInit (GdkDisplay *gdisplay)
{
DisplayInfo *display;
-#ifdef HAVE_XSYNC
- int xsync_major, xsync_minor;
-#endif /* HAVE_XSYNC */
+ int major, minor;
int dummy;
display = g_new0 (DisplayInfo, 1);
@@ -205,11 +203,18 @@
}
/* Test XShape extension support */
+ major = 0;
+ minor = 0;
+ display->shape_version = 0;
if (XShapeQueryExtension (display->dpy,
&display->shape_event_base,
&dummy))
{
display->have_shape = TRUE;
+ if (XShapeQueryVersion (display->dpy, &major, &minor))
+ {
+ display->shape_version = major * 1000 + minor;
+ }
}
else
{
@@ -224,15 +229,15 @@
display->xsync_error_base = 0;
display->xsync_event_base = 0;
- xsync_major = SYNC_MAJOR_VERSION;
- xsync_minor = SYNC_MINOR_VERSION;
+ major = SYNC_MAJOR_VERSION;
+ minor = SYNC_MINOR_VERSION;
if (XSyncQueryExtension (display->dpy,
&display->xsync_event_base,
&display->xsync_error_base)
&& XSyncInitialize (display->dpy,
- &xsync_major,
- &xsync_minor))
+ &major,
+ &minor))
{
display->have_xsync = TRUE;
}
Modified: xfwm4/trunk/src/display.h
===================================================================
--- xfwm4/trunk/src/display.h 2007-04-02 17:59:39 UTC (rev 25368)
+++ xfwm4/trunk/src/display.h 2007-04-02 19:19:01 UTC (rev 25369)
@@ -241,6 +241,7 @@
gboolean have_render;
gboolean have_xrandr;
gboolean have_xsync;
+ gint shape_version;
gint shape_event_base;
gint dbl_click_time;
gint xgrabcount;
Modified: xfwm4/trunk/src/frame.c
===================================================================
--- xfwm4/trunk/src/frame.c 2007-04-02 17:59:39 UTC (rev 25368)
+++ xfwm4/trunk/src/frame.c 2007-04-02 19:19:01 UTC (rev 25369)
@@ -37,6 +37,10 @@
#include "frame.h"
#include "compositor.h"
+#ifndef ShapeInput
+#define ShapeInput 2;
+#endif
+
int
frameDecorationLeft (ScreenInfo *screen_info)
{
@@ -807,6 +811,13 @@
XShapeCombineRectangles (display_info->dpy, shape_win, ShapeBounding, 0, 0, &rect, 1, ShapeIntersect, Unsorted);
XShapeCombineShape (display_info->dpy, c->frame, ShapeBounding, 0, 0, shape_win, ShapeBounding, ShapeSet);
+ /* Set Input shape when using XShape extension 1.1 and later */
+ if (display_info->shape_version >= 1001)
+ {
+ XShapeCombineShape (display_info->dpy, shape_win, ShapeInput, frameLeft (c), frameTop (c), c->window, ShapeBounding, ShapeSubtract);
+ XShapeCombineShape (display_info->dpy, shape_win, ShapeInput, frameLeft (c), frameTop (c), c->window, ShapeInput, ShapeUnion);
+ XShapeCombineShape (display_info->dpy, c->frame, ShapeInput, 0, 0, shape_win, ShapeInput, ShapeSet);
+ }
XDestroyWindow (display_info->dpy, shape_win);
}
More information about the Xfce4-commits
mailing list