[Xfce4-commits] r25370 - xfwm4/branches/xfce_4_2/src
Olivier Fourdan
olivier at xfce.org
Mon Apr 2 21:31:30 CEST 2007
Author: olivier
Date: 2007-04-02 19:31:29 +0000 (Mon, 02 Apr 2007)
New Revision: 25370
Modified:
xfwm4/branches/xfce_4_2/src/display.c
xfwm4/branches/xfce_4_2/src/frame.c
Log:
Add support for shape input with XShape extension 1.1 (Bug #3092)
Modified: xfwm4/branches/xfce_4_2/src/display.c
===================================================================
--- xfwm4/branches/xfce_4_2/src/display.c 2007-04-02 19:19:01 UTC (rev 25369)
+++ xfwm4/branches/xfce_4_2/src/display.c 2007-04-02 19:31:29 UTC (rev 25370)
@@ -157,6 +157,7 @@
myDisplayInit (GdkDisplay *gdisplay)
{
DisplayInfo *display;
+ int major, minor;
int dummy;
display = g_new0 (DisplayInfo, 1);
@@ -173,10 +174,19 @@
}
/* Test XShape extension support */
- display->shape =
- XShapeQueryExtension (display->dpy, &display->shape_event, &dummy);
- if (!display->shape)
+ major = 0;
+ minor = 0;
+ display->shape = 0;
+
+ if (XShapeQueryExtension (display->dpy, &display->shape_event, &dummy))
{
+ if (XShapeQueryVersion (display->dpy, &major, &minor))
+ {
+ display->shape = major * 1000 + minor;
+ }
+ }
+ else
+ {
g_warning ("The display does not support the XShape extension.");
}
Modified: xfwm4/branches/xfce_4_2/src/frame.c
===================================================================
--- xfwm4/branches/xfce_4_2/src/frame.c 2007-04-02 19:19:01 UTC (rev 25369)
+++ xfwm4/branches/xfce_4_2/src/frame.c 2007-04-02 19:31:29 UTC (rev 25370)
@@ -37,6 +37,10 @@
#include "frame.h"
#include "compositor.h"
+#ifndef ShapeInput
+#define ShapeInput 2;
+#endif
+
int
frameDecorationLeft (ScreenInfo *screen_info)
{
@@ -757,6 +761,13 @@
XShapeCombineRectangles (display_info->dpy, temp, ShapeBounding, 0, 0, &rect, 1, ShapeIntersect, 0);
XShapeCombineShape (display_info->dpy, c->frame, ShapeBounding, 0, 0, temp, ShapeBounding, ShapeSet);
+ /* Set Input shape when using XShape extension 1.1 and later */
+ if (display_info->shape >= 1001)
+ {
+ XShapeCombineShape (display_info->dpy, temp, ShapeInput, frameLeft (c), frameTop (c), c->window, ShapeBounding, ShapeSubtract);
+ XShapeCombineShape (display_info->dpy, temp, ShapeInput, frameLeft (c), frameTop (c), c->window, ShapeInput, ShapeUnion);
+ XShapeCombineShape (display_info->dpy, c->frame, ShapeInput, 0, 0, temp, ShapeInput, ShapeSet);
+ }
XDestroyWindow (display_info->dpy, temp);
}
More information about the Xfce4-commits
mailing list