+ }
+
+ // Can we scroll further ?
+ int const value = verticalScrollBar()->value();
+ if (value == verticalScrollBar()->maximum()
+ || value == verticalScrollBar()->minimum()) {
+ synthetic_mouse_event_.timeout.stop();
+ return;
+ }
+
+ // Scroll
+ if (step <= 2 * wh) {
+ buffer_view_->scroll(up ? -step : step);
+ buffer_view_->updateMetrics();
+ } else {
+ buffer_view_->scrollDocView(value + up ? -step : step, false);
+ }
+
+ // In which paragraph do we have to set the cursor ?
+ Cursor & cur = buffer_view_->cursor();
+ TextMetrics const & tm = buffer_view_->textMetrics(cur.text());
+
+ pair<pit_type, const ParagraphMetrics *> p = up ? tm.first() : tm.last();
+ ParagraphMetrics const & pm = *p.second;
+ pit_type const pit = p.first;