From 713056fb86faff6feb22f77a2e20af17fd527a45 Mon Sep 17 00:00:00 2001 From: Mark de Wever Date: Sat, 3 Oct 2009 20:01:59 +0000 Subject: [PATCH] Wire in the mouse wheel events. --- src/gui/widgets/scrollbar_container.cpp | 76 +++++++++++++++++++++++++ src/gui/widgets/scrollbar_container.hpp | 9 +++ 2 files changed, 85 insertions(+) diff --git a/src/gui/widgets/scrollbar_container.cpp b/src/gui/widgets/scrollbar_container.cpp index 50e7026cdf4..b685fce4831 100644 --- a/src/gui/widgets/scrollbar_container.cpp +++ b/src/gui/widgets/scrollbar_container.cpp @@ -100,6 +100,21 @@ tscrollbar_container::tscrollbar_container(const unsigned canvas_count) connect_signal(boost::bind( &tscrollbar_container::signal_handler_sdl_key_down , this, _2, _3, _5, _6)); + + connect_signal(boost::bind( + &tscrollbar_container::signal_handler_sdl_wheel_up + , this, _2, _3)); + connect_signal(boost::bind( + &tscrollbar_container::signal_handler_sdl_wheel_down + , this, _2, _3)); + connect_signal(boost::bind( + &tscrollbar_container::signal_handler_sdl_wheel_left + , this, _2, _3)); + connect_signal(boost::bind( + &tscrollbar_container::signal_handler_sdl_wheel_right + , this, _2, _3)); + + } void tscrollbar_container::layout_init(const bool full_initialization) @@ -869,5 +884,66 @@ void tscrollbar_container::signal_handler_sdl_key_down( } } +void tscrollbar_container::signal_handler_sdl_wheel_up( + const event::tevent event + , bool& handled) +{ + DBG_GUI_E << get_control_type() << "[" << id() << "]: " << event << ".\n"; + + assert(vertical_scrollbar_grid_ && vertical_scrollbar_); + + if(vertical_scrollbar_grid_->get_visible() == twidget::VISIBLE) { + vertical_scrollbar_->scroll(tscrollbar_::HALF_JUMP_BACKWARDS); + scrollbar_moved(); + handled = true; + } +} + +void tscrollbar_container::signal_handler_sdl_wheel_down( + const event::tevent event + , bool& handled) +{ + DBG_GUI_E << get_control_type() << "[" << id() << "]: " << event << ".\n"; + + assert(vertical_scrollbar_grid_ && vertical_scrollbar_); + + if(vertical_scrollbar_grid_->get_visible() == twidget::VISIBLE) { + vertical_scrollbar_->scroll(tscrollbar_::HALF_JUMP_FORWARD); + scrollbar_moved(); + handled = true; + } +} + +void tscrollbar_container::signal_handler_sdl_wheel_left( + const event::tevent event + , bool& handled) +{ + DBG_GUI_E << get_control_type() << "[" << id() << "]: " << event << ".\n"; + + assert(horizontal_scrollbar_grid_ && horizontal_scrollbar_); + + if(horizontal_scrollbar_grid_->get_visible() == twidget::VISIBLE) { + horizontal_scrollbar_->scroll(tscrollbar_::HALF_JUMP_BACKWARDS); + scrollbar_moved(); + handled = true; + } +} + +void tscrollbar_container::signal_handler_sdl_wheel_right( + const event::tevent event + , bool& handled) +{ + DBG_GUI_E << get_control_type() << "[" << id() << "]: " << event << ".\n"; + + assert(horizontal_scrollbar_grid_ && horizontal_scrollbar_); + + if(horizontal_scrollbar_grid_->get_visible() == twidget::VISIBLE) { + horizontal_scrollbar_->scroll(tscrollbar_::HALF_JUMP_FORWARD); + scrollbar_moved(); + handled = true; + } + +} + } // namespace gui2 diff --git a/src/gui/widgets/scrollbar_container.hpp b/src/gui/widgets/scrollbar_container.hpp index 0d25c8ff64c..3a9ccc07d05 100644 --- a/src/gui/widgets/scrollbar_container.hpp +++ b/src/gui/widgets/scrollbar_container.hpp @@ -411,6 +411,15 @@ private: , bool& handled , const SDLKey key , SDLMod modifier); + + void signal_handler_sdl_wheel_up(const event::tevent event + , bool& handled); + void signal_handler_sdl_wheel_down(const event::tevent event + , bool& handled); + void signal_handler_sdl_wheel_left(const event::tevent event + , bool& handled); + void signal_handler_sdl_wheel_right(const event::tevent event + , bool& handled); }; } // namespace gui2