[1mdiff --git a/src/ui/root.c b/src/ui/root.c[m
[1mindex 6f2868b7..3906b6e6 100644[m
[1m--- a/src/ui/root.c[m
[1m+++ b/src/ui/root.c[m
[36m@@ -2159,10 +2159,12 @@[m [miRect visibleRect_Root(const iRoot *d) {[m
visRect.size.y -= (int) (top + bottom);[m
#endif[m
#if defined (iPlatformDesktop)[m
[32m+[m[32m /* Clamp to the actual window size. */[m
[32m+[m[32m visRect = intersect_Rect(visRect, (iRect){ zero_I2(), d->window->size });[m
/* Apply the usable bounds of the display. */[m
SDL_Rect usable;[m
/* TODO: Needs some investigation. With multiple monitors, at least on macOS, the bounds[m
[31m- returned here seem incorrect sometimes (infrequently). */[m
[32m+[m[32m returned here seem incorrect sometimes (infrequently). */[m[41m [m
if (iFalse) {[m
const float ratio = d->window->pixelRatio;[m
SDL_GetDisplayUsableBounds(SDL_GetWindowDisplayIndex(d->window->win), &usable);[m
[1mdiff --git a/src/ui/widget.c b/src/ui/widget.c[m
[1mindex ef2ac868..d2ceb797 100644[m
[1m--- a/src/ui/widget.c[m
[1m+++ b/src/ui/widget.c[m
[36m@@ -1289,7 +1289,7 @@[m [miBool scrollOverflow_Widget(iWidget *d, int delta) {[m
if (!isOverflowScrollPossible_Widget_(d, delta)) {[m
return iFalse;[m
}[m
[31m- iRect bounds = boundsWithoutVisualOffset_Widget(d);[m
[32m+[m[32m iRect bounds = boundsWithoutVisualOffset_Widget(d);[m[41m [m
const iRect winRect = visibleRect_Root(d->root);[m
/* TODO: This needs some fixing on mobile, probably. */[m
// const int yTop = iMaxi(0, top_Rect(winRect));[m
[36m@@ -1393,7 +1393,7 @@[m [miBool processEvent_Widget(iWidget *d, const SDL_Event *ev) {[m
//SDL_GetDisplayUsableBounds(SDL_GetWindowDisplayIndex(win->win),[m
// &usable);[m
const int bottomLimit =[m
[31m- /iMin(/ bottom_Rect(rect_Root(d->root)) /*, usable.h * win->pixelRatio) */[m
[32m+[m[32m /iMin(/ bottom_Rect(visibleRect_Root(d->root)) /*, usable.h * win->pixelRatio) */[m
- hoverScrollLimit;[m
if (ev->motion.y > bottomLimit) {[m
speed = -(ev->motion.y - bottomLimit) / (float) hoverScrollLimit;[m
text/plain
This content has been proxied by September (ba2dc).