- if (!session) {
- return TRUE;
- }
-
- edit_hscroll_dragging = true;
- //cerr << "PRESS" << endl;
-
- return TRUE;
-
- gint start;
- gint width;
- gint end;
- gint x;
-
- start = (gint) floor (edit_hscroll_slider_width * ((double) leftmost_frame / session->current_end_frame()));
- width = (gint) floor (edit_hscroll_slider_width * ((canvas_width * frames_per_unit) / session->current_end_frame()));
-
- end = start + width - 1;
- x = (gint) max (0.0, ev->x);
-
- if (x >= start && x <= end) {
-
- edit_hscroll_drag_last = x;
- edit_hscroll_dragging = true;
- Gtk::Main::grab_add (edit_hscroll_slider);
- }
-
- return TRUE;
-}
-
-gint
-Editor::hscroll_slider_button_release (GdkEventButton *ev)
-{
- if (!session) {
- return TRUE;
- }
-
- gint start;
- gint width;
- gint end;
- gint x;
- gint bar_max = edit_hscroll_slider_width - 2;
- jack_nframes_t new_leftmost = 0;
-
- //cerr << "RELESAE" << endl;
-
- if (edit_hscroll_dragging) {
- // lets do a tempo redisplay now only, because it is dog slow
- tempo_map_changed (Change (0));
- edit_hscroll_dragging = false;
- }
-
- return TRUE;
-
-
- start = (gint) floor (bar_max * ((double) leftmost_frame / session->current_end_frame()));
- width = (gint) floor (bar_max * ((canvas_width * frames_per_unit) / session->current_end_frame()));
-
- end = start + width - 1;
- x = (gint) max (0.0, ev->x);
-
- if (!edit_hscroll_dragging) {
-
- new_leftmost = (jack_nframes_t) floor (((double) x/bar_max) * session->current_end_frame());
- reposition_x_origin (new_leftmost);
- }
-
- if (edit_hscroll_dragging) {
- // lets do a tempo redisplay now only, because it is dog slow
- tempo_map_changed (Change (0));
- edit_hscroll_dragging = false;
- Gtk::Main::grab_remove (edit_hscroll_slider);
- }
-
- return TRUE;
-}
-
-gint
-Editor::hscroll_slider_motion (GdkEventMotion *ev)
-{
- gint x, y;
- GdkModifierType state;
- gint bar_max = edit_hscroll_slider_width - 2;
-
- if (!session || !edit_hscroll_dragging) {
- return TRUE;
- }
-
- edit_hscroll_slider.get_window().get_pointer (x, y, state);
-
- jack_nframes_t new_frame;
- jack_nframes_t frames;
- double distance;
- double fract;
-
- distance = x - edit_hscroll_drag_last;
- fract = fabs (distance) / bar_max;
- frames = (jack_nframes_t) floor (session->current_end_frame() * fract);
-
- if (distance < 0) {
- if (leftmost_frame < frames) {
- new_frame = 0;
- } else {
- new_frame = leftmost_frame - frames;
- }
- } else {
- if (leftmost_frame > max_frames - frames) {
- new_frame = max_frames;
- } else {
- new_frame = leftmost_frame + frames;
- }
- }