Explorar o código

X11: Include X Shape extension headers

Related to #1568.
Camilla Löwy %!s(int64=5) %!d(string=hai) anos
pai
achega
68e4261d73
Modificáronse 4 ficheiros con 12 adicións e 2 borrados
  1. 2 0
      .travis.yml
  2. 5 0
      CMakeLists.txt
  3. 3 0
      src/x11_platform.h
  4. 2 2
      src/x11_window.c

+ 2 - 0
.travis.yml

@@ -17,6 +17,7 @@ matrix:
                       - libxinerama-dev
                       - libxinerama-dev
                       - libxcursor-dev
                       - libxcursor-dev
                       - libxi-dev
                       - libxi-dev
+                      - libxext-dev
           env:
           env:
               - BUILD_SHARED_LIBS=ON
               - BUILD_SHARED_LIBS=ON
               - CFLAGS=-Werror
               - CFLAGS=-Werror
@@ -30,6 +31,7 @@ matrix:
                       - libxinerama-dev
                       - libxinerama-dev
                       - libxcursor-dev
                       - libxcursor-dev
                       - libxi-dev
                       - libxi-dev
+                      - libxext-dev
           env:
           env:
               - BUILD_SHARED_LIBS=OFF
               - BUILD_SHARED_LIBS=OFF
               - CFLAGS=-Werror
               - CFLAGS=-Werror

+ 5 - 0
CMakeLists.txt

@@ -176,6 +176,11 @@ if (_GLFW_X11)
     if (NOT X11_Xi_INCLUDE_PATH)
     if (NOT X11_Xi_INCLUDE_PATH)
         message(FATAL_ERROR "XInput headers not found; install libxi development package")
         message(FATAL_ERROR "XInput headers not found; install libxi development package")
     endif()
     endif()
+
+    # Check for X Shape (custom window input shape)
+    if (NOT X11_Xshape_INCLUDE_PATH)
+        message(FATAL_ERROR "X Shape headers not found; install libxext development package")
+    endif()
 endif()
 endif()
 
 
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------

+ 3 - 0
src/x11_platform.h

@@ -48,6 +48,9 @@
 // The XInput extension provides raw mouse motion input
 // The XInput extension provides raw mouse motion input
 #include <X11/extensions/XInput2.h>
 #include <X11/extensions/XInput2.h>
 
 
+// The Shape extension provides custom window shapes
+#include <X11/extensions/shape.h>
+
 typedef XClassHint* (* PFN_XAllocClassHint)(void);
 typedef XClassHint* (* PFN_XAllocClassHint)(void);
 typedef XSizeHints* (* PFN_XAllocSizeHints)(void);
 typedef XSizeHints* (* PFN_XAllocSizeHints)(void);
 typedef XWMHints* (* PFN_XAllocWMHints)(void);
 typedef XWMHints* (* PFN_XAllocWMHints)(void);

+ 2 - 2
src/x11_window.c

@@ -2714,13 +2714,13 @@ void _glfwPlatformSetWindowMousePassthrough(_GLFWwindow* window, GLFWbool enable
     {
     {
         Region region = XCreateRegion();
         Region region = XCreateRegion();
         XShapeCombineRegion(_glfw.x11.display, window->x11.handle,
         XShapeCombineRegion(_glfw.x11.display, window->x11.handle,
-                            2/*ShapeInput*/, 0, 0, region, 0/*ShapeSet*/);
+                            ShapeInput, 0, 0, region, ShapeSet);
         XDestroyRegion(region);
         XDestroyRegion(region);
     }
     }
     else
     else
     {
     {
         XShapeCombineMask(_glfw.x11.display, window->x11.handle,
         XShapeCombineMask(_glfw.x11.display, window->x11.handle,
-                          2/*ShapeInput*/, 0, 0, None, 0/*ShapeSet*/);
+                          ShapeInput, 0, 0, None, ShapeSet);
     }
     }
 
 
     window->mousePassthrough = enabled;
     window->mousePassthrough = enabled;