From 56ba08b7cbec5fab590d2ac8388e1e0052069b48 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 13 Jul 2015 15:33:15 +0200 Subject: [PATCH] implement scroll-wheel support for ClickBoxes --- libs/gtkmm2ext/auto_spin.cc | 23 +++++++++++++++++++++++ libs/gtkmm2ext/click_box.cc | 7 +++++++ libs/gtkmm2ext/gtkmm2ext/auto_spin.h | 1 + libs/gtkmm2ext/gtkmm2ext/click_box.h | 1 + 4 files changed, 32 insertions(+) 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 @@ -62,6 +62,13 @@ ClickBox::button_press_handler (GdkEventButton* ev) return true; } +bool +ClickBox::on_scroll_event (GdkEventScroll* ev) +{ + AutoSpin::scroll_event (ev); + return true; +} + bool ClickBox::button_release_handler (GdkEventButton* ev) { 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 &); bool button_press_handler (GdkEventButton *); bool button_release_handler (GdkEventButton *); + bool on_scroll_event (GdkEventScroll*); sigc::slot _printer; };