Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/scrollbar.cc')
-rw-r--r--src/ui/scrollbar.cc63
1 files changed, 32 insertions, 31 deletions
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;
}