From 72ee43e9470c6fdbc6ed7ff92b85dfa5062c5762 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Tue, 6 Jan 2015 18:51:37 +0000 Subject: Added separate event handlers for mouse button clicks and mouse wheel movement. --- src/ui/scrollbar.cc | 63 +++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 31 deletions(-) (limited to 'src/ui/scrollbar.cc') diff --git a/src/ui/scrollbar.cc b/src/ui/scrollbar.cc index a8826a5..a766b38 100644 --- a/src/ui/scrollbar.cc +++ b/src/ui/scrollbar.cc @@ -108,44 +108,45 @@ bool ScrollBar::on_emit(Widget *sender, const Event event, void *data) return false; } -bool ScrollBar::on_keypress(const int key, const unsigned int modifier) +bool ScrollBar::on_mousewheel(const math::Vector2f & direction) { - switch (key) { - - case 512 + SDL_BUTTON_WHEELDOWN: - if (scrollbar_value < scrollbar_maximum) { - scrollbar_value++; - emit(EventScrollBarChanged, this); - } - return true; - break; - - case 512 + SDL_BUTTON_WHEELUP: - if (scrollbar_value > scrollbar_minimum) { - scrollbar_value--; - emit(EventScrollBarChanged, this); - } - return true; - break; - - case 512 + SDL_BUTTON_LEFT: - if (scrollbar_maximum > scrollbar_minimum) { - // TODO position hit test - scrollbar_dragging = true; - } - return true; - break; - - default: - break; + if (direction.y() > 0 ) + { + if (scrollbar_value < scrollbar_maximum) { + scrollbar_value--; + emit(EventScrollBarChanged, this); + } + return true; + } else if (direction.y() < 0 ) + { + if (scrollbar_value < scrollbar_maximum) { + scrollbar_value++; + emit(EventScrollBarChanged, this); + } + return true; + } + + return false; +} + +bool ScrollBar::on_mousepress(const unsigned int button) +{ + if (button == SDL_BUTTON_LEFT) + { + if (scrollbar_maximum > scrollbar_minimum) { + // TODO position hit test + scrollbar_dragging = true; + } + return true; } return false; } -bool ScrollBar::on_keyrelease(const int key, const unsigned int modifier) +bool ScrollBar::on_mouserelease(const unsigned int button) { - if (key == 512 + SDL_BUTTON_LEFT) { + if (button == SDL_BUTTON_LEFT) + { scrollbar_dragging = false; return true; } -- cgit v1.2.3