diff options
Diffstat (limited to 'src/ImageViewer.cpp')
-rw-r--r-- | src/ImageViewer.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/ImageViewer.cpp b/src/ImageViewer.cpp index 9777611..8ce9b30 100644 --- a/src/ImageViewer.cpp +++ b/src/ImageViewer.cpp @@ -117,6 +117,10 @@ namespace QuickMedia { return true; } + static double sign(double value) { + return value >= 0.0 ? 1.0 : -1.0; + } + ImageViewerAction ImageViewer::draw(sf::RenderWindow &window) { const double frame_delta = frame_timer.restart().asSeconds(); const double scroll_speed_key_input = 450.0; @@ -177,7 +181,11 @@ namespace QuickMedia { if(middle_mouse_scrolling) { double distance_to_start_y = (double)sf::Mouse::getPosition(window).y - autoscroll_start_y; - scroll_speed = -distance_to_start_y * scroll_speed_autoscroll * frame_delta; + double dist_abs = std::abs(distance_to_start_y); + dist_abs -= 20.0; + if(dist_abs < 0.0) + dist_abs = 0.0; + scroll_speed = -(dist_abs * sign(distance_to_start_y)) * scroll_speed_autoscroll * frame_delta; const double max_speed = 100.0; if(scroll_speed > max_speed) scroll_speed = max_speed; |