Fix X11 input region size.
This commit is contained in:
parent
0ddd9c3e8f
commit
60e0043012
1 changed files with 7 additions and 12 deletions
|
@ -1432,30 +1432,25 @@ void DisplayServerX11::_update_window_mouse_passthrough(WindowID p_window) {
|
|||
int event_base, error_base;
|
||||
const Bool ext_okay = XShapeQueryExtension(x11_display, &event_base, &error_base);
|
||||
if (ext_okay) {
|
||||
Region region;
|
||||
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) {
|
||||
region = XCreateRegion();
|
||||
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);
|
||||
XShapeCombineMask(x11_display, windows[p_window].x11_window, ShapeInput, 0, 0, None, ShapeSet);
|
||||
} else {
|
||||
XPoint *points = (XPoint *)memalloc(sizeof(XPoint) * region_path.size());
|
||||
for (int i = 0; i < region_path.size(); i++) {
|
||||
points[i].x = region_path[i].x;
|
||||
points[i].y = region_path[i].y;
|
||||
}
|
||||
region = XPolygonRegion(points, region_path.size(), EvenOddRule);
|
||||
Region region = XPolygonRegion(points, region_path.size(), EvenOddRule);
|
||||
memfree(points);
|
||||
}
|
||||
XShapeCombineRegion(x11_display, windows[p_window].x11_window, ShapeInput, 0, 0, region, ShapeSet);
|
||||
XDestroyRegion(region);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DisplayServerX11::window_set_rect_changed_callback(const Callable &p_callable, WindowID p_window) {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
|
Loading…
Reference in a new issue