Fix X11 input region size.

This commit is contained in:
bruvzg 2023-01-17 07:54:54 +02:00
parent 0ddd9c3e8f
commit 60e0043012
No known key found for this signature in database
GPG Key ID: 7960FCF39844EC38

View File

@ -1432,28 +1432,23 @@ void DisplayServerX11::_update_window_mouse_passthrough(WindowID p_window) {
int event_base, error_base; int event_base, error_base;
const Bool ext_okay = XShapeQueryExtension(x11_display, &event_base, &error_base); const Bool ext_okay = XShapeQueryExtension(x11_display, &event_base, &error_base);
if (ext_okay) { if (ext_okay) {
Region region;
if (windows[p_window].mpass) { if (windows[p_window].mpass) {
region = XCreateRegion(); Region region = XCreateRegion();
XShapeCombineRegion(x11_display, windows[p_window].x11_window, ShapeInput, 0, 0, region, ShapeSet);
XDestroyRegion(region);
} else if (region_path.size() == 0) { } else if (region_path.size() == 0) {
region = XCreateRegion(); XShapeCombineMask(x11_display, windows[p_window].x11_window, ShapeInput, 0, 0, None, ShapeSet);
XRectangle rect;
rect.x = 0;
rect.y = 0;
rect.width = window_get_size_with_decorations(p_window).x;
rect.height = window_get_size_with_decorations(p_window).y;
XUnionRectWithRegion(&rect, region, region);
} else { } else {
XPoint *points = (XPoint *)memalloc(sizeof(XPoint) * region_path.size()); XPoint *points = (XPoint *)memalloc(sizeof(XPoint) * region_path.size());
for (int i = 0; i < region_path.size(); i++) { for (int i = 0; i < region_path.size(); i++) {
points[i].x = region_path[i].x; points[i].x = region_path[i].x;
points[i].y = region_path[i].y; points[i].y = region_path[i].y;
} }
region = XPolygonRegion(points, region_path.size(), EvenOddRule); Region region = XPolygonRegion(points, region_path.size(), EvenOddRule);
memfree(points); memfree(points);
XShapeCombineRegion(x11_display, windows[p_window].x11_window, ShapeInput, 0, 0, region, ShapeSet);
XDestroyRegion(region);
} }
XShapeCombineRegion(x11_display, windows[p_window].x11_window, ShapeInput, 0, 0, region, ShapeSet);
XDestroyRegion(region);
} }
} }