diff options
-rw-r--r-- | src/window.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/window.cpp b/src/window.cpp index 4dca8403a..568b1814b 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -442,7 +442,7 @@ static void DispatchHoverEvent(Window *w, int x, int y) * @param nwid the widget where the scrollwheel was used * @param wheel scroll up or down */ -static void DispatchMouseWheelEvent(Window *w, const NWidgetCore *nwid, int wheel) +static void DispatchMouseWheelEvent(Window *w, NWidgetCore *nwid, int wheel) { if (nwid == NULL) return; @@ -452,6 +452,16 @@ static void DispatchMouseWheelEvent(Window *w, const NWidgetCore *nwid, int whee return; } + /* Wheeling a vertical scrollbar. */ + if (nwid->type == NWID_VSCROLLBAR) { + NWidgetScrollbar *sb = static_cast<NWidgetScrollbar *>(nwid); + if (sb->GetCount() > sb->GetCapacity()) { + sb->UpdatePosition(wheel); + w->SetDirty(); + } + return; + } + /* Scroll the widget attached to the scrollbar. */ Scrollbar *sb = (nwid->scrollbar_index >= 0 ? w->GetScrollbar(nwid->scrollbar_index) : NULL); if (sb != NULL && sb->GetCount() > sb->GetCapacity()) { |