From c3819073118488ffef5482957758d65be8c33cec Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 13 Mar 2022 05:19:37 +0100 Subject: Attempt to fix video player focus, add keys to navigate to previous/next chapter in image scroll view --- src/ImageViewer.cpp | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src/ImageViewer.cpp') diff --git a/src/ImageViewer.cpp b/src/ImageViewer.cpp index d00c375..1176046 100644 --- a/src/ImageViewer.cpp +++ b/src/ImageViewer.cpp @@ -194,6 +194,22 @@ namespace QuickMedia { return value >= 0.0 ? 1.0 : -1.0; } + static bool is_key_scroll_up(const mgl::Event::KeyEvent &key) { + return (!key.control && key.code == mgl::Keyboard::Up) || (!key.alt && key.control && key.code == mgl::Keyboard::K); + } + + static bool is_key_scroll_down(const mgl::Event::KeyEvent &key) { + return (!key.control && key.code == mgl::Keyboard::Down) || (!key.alt && key.control && key.code == mgl::Keyboard::J); + } + + static bool is_key_previous_chapter(const mgl::Event::KeyEvent &key) { + return (key.control && key.code == mgl::Keyboard::Up) || (key.alt && key.control && key.code == mgl::Keyboard::K); + } + + static bool is_key_next_chapter(const mgl::Event::KeyEvent &key) { + return (key.control && key.code == mgl::Keyboard::Down) || (key.alt && key.control && key.code == mgl::Keyboard::J); + } + ImageViewerAction ImageViewer::draw() { const double frame_delta = frame_timer.restart(); const double scroll_speed_key_input = 200.0; @@ -229,11 +245,17 @@ namespace QuickMedia { window_size.x = event.size.width; window_size.y = event.size.height; } else if(event.type == mgl::Event::KeyPressed) { - if(event.key.code == mgl::Keyboard::Up || (event.key.control && event.key.code == mgl::Keyboard::K)) + if(is_key_scroll_up(event.key)) up_pressed = true; - if(event.key.code == mgl::Keyboard::Down || (event.key.control && event.key.code == mgl::Keyboard::J)) + if(is_key_scroll_down(event.key)) down_pressed = true; + if(is_key_previous_chapter(event.key)) + return ImageViewerAction::PREVIOUS_CHAPTER; + + if(is_key_next_chapter(event.key)) + return ImageViewerAction::NEXT_CHAPTER; + if(event.key.code == mgl::Keyboard::Escape) return ImageViewerAction::RETURN; @@ -243,9 +265,9 @@ namespace QuickMedia { if(event.key.code == mgl::Keyboard::F) *fit_image_to_window = !*fit_image_to_window; } else if(event.type == mgl::Event::KeyReleased) { - if(event.key.code == mgl::Keyboard::Up || (event.key.control && event.key.code == mgl::Keyboard::K)) + if(is_key_scroll_up(event.key)) up_pressed = false; - if(event.key.code == mgl::Keyboard::Down || (event.key.control && event.key.code == mgl::Keyboard::J)) + if(is_key_scroll_down(event.key)) down_pressed = false; } else if(event.type == mgl::Event::MouseWheelScrolled/* && event.mouse_wheel_scroll.wheel == mgl::Mouse::VerticalWheel*/) { scroll_speed += scroll_speed_mouse_wheel * event.mouse_wheel_scroll.delta * frame_delta; -- cgit v1.2.3