X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fwidget_timeslider.cpp;h=651cbe0ac879ea60f366922e1f50c386d94c6464;hb=1b138b535876987c79453888f370d71910d975ed;hp=4b87f3a7b5f50c95d3903165efd975fb1dcc769e;hpb=46be86a89462801a0392ffa9bcabe09ed96cbaf2;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/widget_timeslider.cpp b/synfig-studio/trunk/src/gtkmm/widget_timeslider.cpp index 4b87f3a..651cbe0 100644 --- a/synfig-studio/trunk/src/gtkmm/widget_timeslider.cpp +++ b/synfig-studio/trunk/src/gtkmm/widget_timeslider.cpp @@ -707,7 +707,42 @@ bool Widget_Timeslider::on_scroll_event(GdkEventScroll* event) //for zooming return true; } + + case GDK_SCROLL_RIGHT: + case GDK_SCROLL_LEFT: + { + double t = adj_timescale->get_value(); + double start = adj_timescale->get_lower(); + double end = adj_timescale->get_upper(); + /* + FIXME: be more intelligent about how far to scroll + Perhaps it should be based on the tickmarks? + for e.g. 1/4 of a tick mark per scroll event + Obviously this would need post-rounding to 1/fps + */ + double adj = 1.0/fps; + + if( event->direction == GDK_SCROLL_RIGHT ) + t += adj; + else + t -= adj; + + if( t < start ){ + adj_timescale->set_lower(t); + adj_timescale->set_upper(t+end-start); + } else if( t > end ){ + adj_timescale->set_upper(t); + adj_timescale->set_lower(t-end+start); + } + if(adj_timescale) + { + adj_timescale->set_value(t); + adj_timescale->value_changed(); + } + return true; + } + default: { return false;