X11: Include X Shape extension headers

Related to #1568.
This commit is contained in:
Camilla Löwy 2020-07-06 23:15:20 +02:00
parent e81d381256
commit 68e4261d73
4 changed files with 12 additions and 2 deletions

View File

@ -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

View File

@ -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()
#-------------------------------------------------------------------- #--------------------------------------------------------------------

View File

@ -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);

View File

@ -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;