diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index 704b3bea..e82e3ed3 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -208,6 +208,19 @@ void ChatView::adjustSceneRect() } +void ChatView::setPageStep() +{ + auto line = _scene->chatItemAt(QPointF(0, 0)); + if (line) { + qreal line_height = line->height(); + int viewport_height = viewport()->size().height(); + int context = 2; + + verticalScrollBar()->setPageStep(viewport_height - context * line_height); + } +} + + void ChatView::mouseMoveWhileSelecting(const QPointF &scenePos) { int y = (int)mapFromScene(scenePos).y(); @@ -394,6 +407,8 @@ void ChatView::zoomIn() _currentScaleFactor *= 1.2; scale(1.2, 1.2); scene()->setWidth(viewport()->width() / _currentScaleFactor - 2); + + setPageStep(); } @@ -402,6 +417,8 @@ void ChatView::zoomOut() _currentScaleFactor /= 1.2; scale(1 / 1.2, 1 / 1.2); scene()->setWidth(viewport()->width() / _currentScaleFactor - 2); + + setPageStep(); } @@ -410,6 +427,8 @@ void ChatView::zoomOriginal() scale(1/_currentScaleFactor, 1/_currentScaleFactor); _currentScaleFactor = 1; scene()->setWidth(viewport()->width() - 2); + + setPageStep(); } diff --git a/src/qtui/chatview.h b/src/qtui/chatview.h index 8b50c55e..cf461103 100644 --- a/src/qtui/chatview.h +++ b/src/qtui/chatview.h @@ -96,6 +96,7 @@ protected: protected slots: virtual void verticalScrollbarChanged(int); + void setPageStep(); private slots: void lastLineChanged(QGraphicsItem *chatLine, qreal offset);