diff options
author | Robin Gareus <robin@gareus.org> | 2015-07-13 15:33:15 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-07-13 15:33:15 +0200 |
commit | 56ba08b7cbec5fab590d2ac8388e1e0052069b48 (patch) | |
tree | 457b5592f8dbf5d6bba11e058d266342fff291af /libs/gtkmm2ext | |
parent | f4229968d9e8d158984b6d930ebce81992511c47 (diff) |
implement scroll-wheel support for ClickBoxes
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r-- | libs/gtkmm2ext/auto_spin.cc | 23 | ||||
-rw-r--r-- | libs/gtkmm2ext/click_box.cc | 7 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/auto_spin.h | 1 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/click_box.h | 1 |
4 files changed, 32 insertions, 0 deletions
diff --git a/libs/gtkmm2ext/auto_spin.cc b/libs/gtkmm2ext/auto_spin.cc index 0f4c371a09..707414df95 100644 --- a/libs/gtkmm2ext/auto_spin.cc +++ b/libs/gtkmm2ext/auto_spin.cc @@ -143,6 +143,29 @@ AutoSpin::button_press (GdkEventButton *ev) return TRUE; } +gint +AutoSpin::scroll_event (GdkEventScroll *ev) +{ + stop_spinning (0); + + gfloat increment = step_increment; + + if (ev->state & Keyboard::TertiaryModifier) { + increment = page_increment; + } + + switch (ev->direction) { + case GDK_SCROLL_DOWN: + case GDK_SCROLL_LEFT: + adjust_value (-increment); + break; + case GDK_SCROLL_RIGHT: + case GDK_SCROLL_UP: + adjust_value (increment); + break; + } +} + void AutoSpin::start_spinning (bool decrement, bool page) { diff --git a/libs/gtkmm2ext/click_box.cc b/libs/gtkmm2ext/click_box.cc index 63ab3db7ba..383fa6e583 100644 --- a/libs/gtkmm2ext/click_box.cc +++ b/libs/gtkmm2ext/click_box.cc @@ -63,6 +63,13 @@ ClickBox::button_press_handler (GdkEventButton* ev) } bool +ClickBox::on_scroll_event (GdkEventScroll* ev) +{ + AutoSpin::scroll_event (ev); + return true; +} + +bool ClickBox::button_release_handler (GdkEventButton* ev) { switch (ev->button) { diff --git a/libs/gtkmm2ext/gtkmm2ext/auto_spin.h b/libs/gtkmm2ext/gtkmm2ext/auto_spin.h index 8a6c9ab3b0..0f5a9467c6 100644 --- a/libs/gtkmm2ext/gtkmm2ext/auto_spin.h +++ b/libs/gtkmm2ext/gtkmm2ext/auto_spin.h @@ -47,6 +47,7 @@ class LIBGTKMM2EXT_API AutoSpin gint button_press (GdkEventButton *); gint stop_spinning (GdkEventButton *ignored_but_here_for_clicked); void start_spinning (bool decrementing, bool use_page); + gint scroll_event (GdkEventScroll *); private: Gtk::Adjustment &adjustment; diff --git a/libs/gtkmm2ext/gtkmm2ext/click_box.h b/libs/gtkmm2ext/gtkmm2ext/click_box.h index c2afa2dd12..3b7fd0f498 100644 --- a/libs/gtkmm2ext/gtkmm2ext/click_box.h +++ b/libs/gtkmm2ext/gtkmm2ext/click_box.h @@ -57,6 +57,7 @@ class LIBGTKMM2EXT_API ClickBox : public Gtk::DrawingArea, public AutoSpin void style_changed (const Glib::RefPtr<Gtk::Style> &); bool button_press_handler (GdkEventButton *); bool button_release_handler (GdkEventButton *); + bool on_scroll_event (GdkEventScroll*); sigc::slot<bool, char *, Gtk::Adjustment &> _printer; }; |