diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/window.cpp | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/src/window.cpp b/src/window.cpp index ad04818ee..1abf143f2 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -2290,31 +2290,33 @@ static int _input_events_this_tick = 0; */ static void HandleAutoscroll() { - if (_settings_client.gui.autoscroll && _game_mode != GM_MENU && !HasModalProgress()) { - int x = _cursor.pos.x; - int y = _cursor.pos.y; - Window *w = FindWindowFromPt(x, y); - if (w == NULL || w->flags & WF_DISABLE_VP_SCROLL) return; - ViewPort *vp = IsPtInWindowViewport(w, x, y); - if (vp != NULL) { - x -= vp->left; - y -= vp->top; - - /* here allows scrolling in both x and y axis */ + if (_game_mode == GM_MENU || HasModalProgress()) return; + if (!_settings_client.gui.autoscroll) return; + + int x = _cursor.pos.x; + int y = _cursor.pos.y; + Window *w = FindWindowFromPt(x, y); + if (w == NULL || w->flags & WF_DISABLE_VP_SCROLL) return; + + ViewPort *vp = IsPtInWindowViewport(w, x, y); + if (vp == NULL) return; + + x -= vp->left; + y -= vp->top; + + /* here allows scrolling in both x and y axis */ #define scrollspeed 3 - if (x - 15 < 0) { - w->viewport->dest_scrollpos_x += ScaleByZoom((x - 15) * scrollspeed, vp->zoom); - } else if (15 - (vp->width - x) > 0) { - w->viewport->dest_scrollpos_x += ScaleByZoom((15 - (vp->width - x)) * scrollspeed, vp->zoom); - } - if (y - 15 < 0) { - w->viewport->dest_scrollpos_y += ScaleByZoom((y - 15) * scrollspeed, vp->zoom); - } else if (15 - (vp->height - y) > 0) { - w->viewport->dest_scrollpos_y += ScaleByZoom((15 - (vp->height - y)) * scrollspeed, vp->zoom); - } -#undef scrollspeed - } + if (x - 15 < 0) { + w->viewport->dest_scrollpos_x += ScaleByZoom((x - 15) * scrollspeed, vp->zoom); + } else if (15 - (vp->width - x) > 0) { + w->viewport->dest_scrollpos_x += ScaleByZoom((15 - (vp->width - x)) * scrollspeed, vp->zoom); + } + if (y - 15 < 0) { + w->viewport->dest_scrollpos_y += ScaleByZoom((y - 15) * scrollspeed, vp->zoom); + } else if (15 - (vp->height - y) > 0) { + w->viewport->dest_scrollpos_y += ScaleByZoom((15 - (vp->height - y)) * scrollspeed, vp->zoom); } +#undef scrollspeed } enum MouseClick { |