diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-03-17 20:54:03 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-03-17 20:54:03 +0000 |
commit | 997e4b1f9cd7ccfc704b7c035051da7f60d831e7 (patch) | |
tree | 1236e40183b677abf4a2882e4cfe8e0a345eb24d /libs/gtkmm2ext/pixfader.cc | |
parent | 19a4b990325577fc949ccd5d5fbad4520eb1df56 (diff) |
merge with 2.0-ongoing @ rev 3147
git-svn-id: svn://localhost/ardour2/branches/3.0@3152 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/gtkmm2ext/pixfader.cc')
-rw-r--r-- | libs/gtkmm2ext/pixfader.cc | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/libs/gtkmm2ext/pixfader.cc b/libs/gtkmm2ext/pixfader.cc index fe464d0fac..521a6cb9ca 100644 --- a/libs/gtkmm2ext/pixfader.cc +++ b/libs/gtkmm2ext/pixfader.cc @@ -138,7 +138,7 @@ PixFader::on_button_release_event (GdkEventButton* ev) { double fract, ev_pos; - ev_pos = (_orien == VERT) ? ev->y : 0; // Don't step if we are horizontal + ev_pos = (_orien == VERT) ? ev->y : ev->x; switch (ev->button) { case 1: @@ -154,7 +154,7 @@ PixFader::on_button_release_event (GdkEventButton* ev) adjustment.set_value (default_value); } else if (ev->state & fine_scale_modifier) { adjustment.set_value (adjustment.get_lower()); - } else if (ev_pos < span - display_span()) { + } else if ((_orien == VERT && ev_pos < span - display_span()) || (_orien == HORIZ && ev_pos > span - display_span())) { /* above the current display height, remember X Window coords */ adjustment.set_value (adjustment.get_value() + adjustment.get_step_increment()); } else { @@ -190,6 +190,7 @@ bool PixFader::on_scroll_event (GdkEventScroll* ev) { double scale; + bool ret = false; if (ev->state & fine_scale_modifier) { if (ev->state & extra_fine_scale_modifier) { @@ -202,35 +203,49 @@ PixFader::on_scroll_event (GdkEventScroll* ev) } if (_orien == VERT) { + + /* should left/right scroll affect vertical faders ? */ + switch (ev->direction) { case GDK_SCROLL_UP: /* wheel up */ adjustment.set_value (adjustment.get_value() + (adjustment.get_page_increment() * scale)); + ret = true; break; case GDK_SCROLL_DOWN: /* wheel down */ adjustment.set_value (adjustment.get_value() - (adjustment.get_page_increment() * scale)); + ret = true; break; default: break; } } else { + + /* up/down scrolls should definitely affect horizontal faders + because they are so much easier to use + */ + switch (ev->direction) { case GDK_SCROLL_RIGHT: + case GDK_SCROLL_UP: /* wheel right */ adjustment.set_value (adjustment.get_value() + (adjustment.get_page_increment() * scale)); + ret = true; break; case GDK_SCROLL_LEFT: + case GDK_SCROLL_DOWN: /* wheel left */ adjustment.set_value (adjustment.get_value() - (adjustment.get_page_increment() * scale)); + ret = true; break; default: break; } } - return false; + return ret; } bool |