aboutsummaryrefslogtreecommitdiff
path: root/src/ImageViewer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ImageViewer.cpp')
-rw-r--r--src/ImageViewer.cpp34
1 files changed, 26 insertions, 8 deletions
diff --git a/src/ImageViewer.cpp b/src/ImageViewer.cpp
index 0773f80..d2b1a95 100644
--- a/src/ImageViewer.cpp
+++ b/src/ImageViewer.cpp
@@ -133,7 +133,7 @@ namespace QuickMedia {
ImageViewerAction ImageViewer::draw(sf::RenderWindow &window) {
const double frame_delta = frame_timer.restart().asSeconds();
- const double scroll_speed_key_input = 450.0;
+ const double scroll_speed_key_input = 50.0;
const double scroll_speed_mouse_wheel = 600.0;
const double scroll_speed_autoscroll = 10.0;
const double scroll_deaccel = 0.96;
@@ -162,17 +162,24 @@ namespace QuickMedia {
} else if(event.type == sf::Event::GainedFocus) {
//redraw = true;
} else if(event.type == sf::Event::KeyPressed) {
- if(event.key.code == sf::Keyboard::Up) {
- scroll_speed += scroll_speed_key_input * frame_delta;
- } else if(event.key.code == sf::Keyboard::Down) {
- scroll_speed -= scroll_speed_key_input * frame_delta;
- } else if(event.key.code == sf::Keyboard::Escape) {
+ if(event.key.code == sf::Keyboard::Up)
+ up_pressed = true;
+ if(event.key.code == sf::Keyboard::Down)
+ down_pressed = true;
+
+ if(event.key.code == sf::Keyboard::Escape) {
if(has_default_cursor)
window.setMouseCursor(default_cursor);
return ImageViewerAction::RETURN;
- } else if(event.key.code == sf::Keyboard::I) {
- return ImageViewerAction::SWITCH_TO_SINGLE_IMAGE_MODE;
}
+
+ if(event.key.code == sf::Keyboard::I)
+ return ImageViewerAction::SWITCH_TO_SINGLE_IMAGE_MODE;
+ } else if(event.type == sf::Event::KeyReleased) {
+ if(event.key.code == sf::Keyboard::Up)
+ up_pressed = false;
+ if(event.key.code == sf::Keyboard::Down)
+ down_pressed = false;
} else if(event.type == sf::Event::MouseWheelScrolled && event.mouseWheelScroll.wheel == sf::Mouse::VerticalWheel) {
scroll_speed += scroll_speed_mouse_wheel * event.mouseWheelScroll.delta * frame_delta;
} else if(event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Button::Middle) {
@@ -189,6 +196,11 @@ namespace QuickMedia {
}
}
+ if(up_pressed)
+ scroll_speed += scroll_speed_key_input * frame_delta;
+ if(down_pressed)
+ scroll_speed -= scroll_speed_key_input * frame_delta;
+
if(middle_mouse_scrolling) {
double distance_to_start_y = (double)sf::Mouse::getPosition(window).y - autoscroll_start_y;
double dist_abs = std::abs(distance_to_start_y);
@@ -203,6 +215,12 @@ namespace QuickMedia {
scroll_speed = -max_speed;
scroll += scroll_speed;
} else {
+ const double max_speed = 100.0;
+ if(scroll_speed > max_speed)
+ scroll_speed = max_speed;
+ if(scroll_speed < -max_speed)
+ scroll_speed = -max_speed;
+
scroll_speed *= scroll_deaccel;
if(std::abs(scroll_speed) < 0.01) {
scroll_speed = 0.0;