mirror of
https://github.com/godotengine/godot.git
synced 2024-11-15 08:32:54 +00:00
Fix X11 input region size.
This commit is contained in:
parent
0ddd9c3e8f
commit
60e0043012
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user