Signed-off-by: Adam Jackson <a...@redhat.com>
---
 COPYING        |    1 +
 fixesproto.txt |   73 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 xfixesproto.h  |   30 +++++++++++++++++++++++
 xfixeswire.h   |   18 +++++++++++--
 4 files changed, 115 insertions(+), 7 deletions(-)

diff --git a/COPYING b/COPYING
index cdcb1ad..c8114fe 100644
--- a/COPYING
+++ b/COPYING
@@ -1,4 +1,5 @@
 Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+Copyright 2010 Red Hat, Inc.
 
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the "Software"),
diff --git a/fixesproto.txt b/fixesproto.txt
index 5ef8153..6b1c2fc 100644
--- a/fixesproto.txt
+++ b/fixesproto.txt
@@ -1,7 +1,7 @@
                         The XFIXES Extension
-                           Version 4.0
-                        Document Revision 2
-                            2006-12-14
+                           Version 5.0
+                        Document Revision 1
+                            2010-11-15
                            Keith Packard
                          kei...@keithp.com
 
@@ -19,7 +19,7 @@ developers, in particular,
 
  +     Owen Taylor for describing the issues raised with the XEMBED
        mechanisms and SaveSet processing and his initial extension
-       to handle this issue.
+       to handle this issue, and for cursor barriers
 
  +     Bill Haneman for the design for cursor image tracking.
 
@@ -566,6 +566,71 @@ ShowCursor
        Servers supporting the X Input Extension Version 2.0 or higher show
        all visible cursors in response to a ShowCursor request.
 
+************* XFIXES VERSION 5 OR BETTER ***********
+
+12. Cursor Barriers
+
+Compositing managers and desktop environments may have UI elements in
+particular screen locations such that for a single-headed display they
+correspond to easy targets according to Fitt's Law, for example, the top
+left corner.  For a multiheaded environment these corners should still be
+semi-impermeable.  Cursor barriers allow the application to define
+additional constraint on cursor motion so that these regions behave as
+expected even in the face of multiple displays.
+
+WarpPointer and similar requests do not obey these barriers.
+
+12.1 Types
+
+       BARRIER:        XID
+
+       BarrierDirections
+
+               BarrierPositiveX:           1 << 0
+               BarrierPositiveY:           1 << 1
+               BarrierNegativeX:           1 << 2
+               BarrierNegativeY:           1 << 3
+
+12.2 Errors
+
+       Barrier
+
+12.3 Requests
+
+CreateCursorBarrier
+
+               barrier:                    BARRIER
+               window:                     WINDOW
+               x1, y2, x2, y2:             CARD16
+               directions:                 CARD32
+
+       Creates a cursor barrier along the line specified by the given
+       coordinates on the screen specified by the given Window.  The
+       barrier has no spatial extent; it is simply a line along the left
+       or top edge of the specified pixels.
+
+       The coordinates must be axis aligned, either x1 == x2, or
+       y1 == y2.  If not, BadValue is generated.
+
+       Motion is allowed through the barrier in the directions specified.
+       Nonsensical values (forbidding Y axis travel through a vertical
+       barrier, for example) and excess set bits are ignored.
+
+       Servers supporting the X Input Extension version 2.0 or higher
+       respect these barriers for any cursor on relative motion events.
+       Absolute positioning devices do not obey these barriers as there's
+       no benefit to target acquisition to do so.
+
+       Errors: IDChoice, Window, Value
+
+DestroyCursorBarrier
+
+               barrier:                    BARRIER
+
+       Destroys the named barrier.
+
+       Errors: Barrier 
+
 99. Future compatibility
 
 This extension is not expected to remain fixed.  Future changes will
diff --git a/xfixesproto.h b/xfixesproto.h
index ed872d1..c2db307 100644
--- a/xfixesproto.h
+++ b/xfixesproto.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2010 Red Hat, Inc.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -500,6 +501,35 @@ typedef struct {
 
 #define sz_xXFixesShowCursorReq        sizeof(xXFixesShowCursorReq)
 
+/*************** Version 5.0 ******************/
+
+#define Barrier CARD32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   xfixesReqType;
+    CARD16  length B16;
+    Barrier barrier B32;
+    Window  window B32;
+    CARD16  x1 B16;
+    CARD16  y1 B16;
+    CARD16  x2 B16;
+    CARD16  y2 B16;
+    CARD32  directions;
+} xXFixesCreateCursorBarrierReq;
+
+#define sz_xXFixesHideCursorReq 24
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   xfixesReqType;
+    CARD16  length B16;
+    Barrier barrier B32;
+} xXFixesDestroyCursorBarrierReq;
+
+#define sz_xXFixesDestroyCursorBarrierReq 8
+
+#undef Barrier
 #undef Region
 #undef Picture
 #undef Window
diff --git a/xfixeswire.h b/xfixeswire.h
index 7b43f09..06222e1 100644
--- a/xfixeswire.h
+++ b/xfixeswire.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2010 Red Hat, Inc.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -47,7 +48,7 @@
 #define _XFIXESWIRE_H_
 
 #define XFIXES_NAME    "XFIXES"
-#define XFIXES_MAJOR   4
+#define XFIXES_MAJOR   5
 #define XFIXES_MINOR   0
 
 /*************** Version 1 ******************/
@@ -85,8 +86,11 @@
 /*************** Version 4 ******************/
 #define X_XFixesHideCursor                 29
 #define X_XFixesShowCursor                 30
+/*************** Version 5 ******************/
+#define X_XFixesCreateCursorBarrier        31
+#define X_XFixesDestroyCursorBarrier       32
 
-#define XFixesNumberRequests               (X_XFixesShowCursor+1)
+#define XFixesNumberRequests               (X_XFixesDestroyCursorBarrier+1)
 
 /* Selection events share one event number */
 #define XFixesSelectionNotify              0
@@ -111,7 +115,8 @@
 
 /* errors */
 #define BadRegion                          0
-#define XFixesNumberErrors                 (BadRegion+1)
+#define BadBarrier                         1
+#define XFixesNumberErrors                 (BadBarrier+1)
 
 #define SaveSetNearest                     0
 #define SaveSetRoot                        1
@@ -124,4 +129,11 @@
 #define WindowRegionBounding               0
 #define WindowRegionClip                   1
 
+/*************** Version 5 ******************/
+
+#define BarrierPositiveX                   (1L << 0)
+#define BarrierPositiveY                   (1L << 1)
+#define BarrierNegativeX                   (1L << 2)
+#define BarrierNegativeY                   (1L << 3)
+
 #endif /* _XFIXESWIRE_H_ */
-- 
1.7.2.3

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to