From feaee915bc11a82e578f773a7de6c424294ffae1 Mon Sep 17 00:00:00 2001 From: Igor Kushnir Date: Sat, 6 Mar 2021 18:39:01 +0200 Subject: [PATCH] Extract Viewer::(vertical|horizontal)ScrollStep() --- YACReader/viewer.cpp | 32 ++++++++++++++++++++++---------- YACReader/viewer.h | 3 +++ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/YACReader/viewer.cpp b/YACReader/viewer.cpp index db37a8fb..d024945b 100644 --- a/YACReader/viewer.cpp +++ b/YACReader/viewer.cpp @@ -492,6 +492,18 @@ void Viewer::scrollBackwardVerticalFirst() } } +static constexpr auto relativeScrollStep = 0.80; + +int Viewer::verticalScrollStep() const +{ + return static_cast(height() * relativeScrollStep); +} + +int Viewer::horizontalScrollStep() const +{ + return static_cast(width() * relativeScrollStep); +} + bool Viewer::isEdge(scrollDirection d) { if (d == UP) @@ -509,15 +521,15 @@ void Viewer::scrollZigzag(scrollDirection d1, scrollDirection d2, bool forward) if (!isEdge(d1)) { if (d1 == UP) scrollTo(horizontalScrollBar()->sliderPosition(), - verticalScrollBar()->sliderPosition() - static_cast((height() * 0.80))); + verticalScrollBar()->sliderPosition() - verticalScrollStep()); else if (d1 == DOWN) scrollTo(horizontalScrollBar()->sliderPosition(), - verticalScrollBar()->sliderPosition() + static_cast((height() * 0.80))); + verticalScrollBar()->sliderPosition() + verticalScrollStep()); else if (d1 == LEFT) - scrollTo(horizontalScrollBar()->sliderPosition() - static_cast((width() * 0.80)), + scrollTo(horizontalScrollBar()->sliderPosition() - horizontalScrollStep(), verticalScrollBar()->sliderPosition()); else // d1 == RIGHT - scrollTo(horizontalScrollBar()->sliderPosition() + static_cast((width() * 0.80)), + scrollTo(horizontalScrollBar()->sliderPosition() + horizontalScrollStep(), verticalScrollBar()->sliderPosition()); } else if (!isEdge(d2)) { int x = 0; @@ -533,13 +545,13 @@ void Viewer::scrollZigzag(scrollDirection d1, scrollDirection d2, bool forward) x = horizontalScrollBar()->minimum(); if (d2 == UP) - y = std::max(verticalScrollBar()->sliderPosition() - static_cast((height() * 0.80)), verticalScrollBar()->minimum()); + y = std::max(verticalScrollBar()->sliderPosition() - verticalScrollStep(), verticalScrollBar()->minimum()); else if (d2 == DOWN) - y = std::min(verticalScrollBar()->sliderPosition() + static_cast((height() * 0.80)), verticalScrollBar()->maximum()); + y = std::min(verticalScrollBar()->sliderPosition() + verticalScrollStep(), verticalScrollBar()->maximum()); else if (d2 == LEFT) - x = std::max(horizontalScrollBar()->sliderPosition() - static_cast((width() * 0.80)), horizontalScrollBar()->minimum()); + x = std::max(horizontalScrollBar()->sliderPosition() - horizontalScrollStep(), horizontalScrollBar()->minimum()); else // d2 == RIGHT - x = std::min(horizontalScrollBar()->sliderPosition() + static_cast((width() * 0.80)), horizontalScrollBar()->maximum()); + x = std::min(horizontalScrollBar()->sliderPosition() + horizontalScrollStep(), horizontalScrollBar()->maximum()); scrollTo(x, y); } else { @@ -596,12 +608,12 @@ void Viewer::keyPressEvent(QKeyEvent *event) else*/ if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_FORWARD_ACTION_Y)) { - nextPos = verticalScrollBar()->sliderPosition() + static_cast((height() * 0.80)); + nextPos = verticalScrollBar()->sliderPosition() + verticalScrollStep(); scrollDown(); } else if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_BACKWARD_ACTION_Y)) { - nextPos = verticalScrollBar()->sliderPosition() - static_cast((height() * 0.80)); + nextPos = verticalScrollBar()->sliderPosition() - verticalScrollStep(); scrollUp(); } diff --git a/YACReader/viewer.h b/YACReader/viewer.h index c58439df..7e959511 100644 --- a/YACReader/viewer.h +++ b/YACReader/viewer.h @@ -164,6 +164,9 @@ private: void moveAction(const QKeySequence &key); + int verticalScrollStep() const; + int horizontalScrollStep() const; + //! ZigzagScroll enum scrollDirection { UP, DOWN,