X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_rulers.cc;h=6b1612a3ecec54052b124c3ce8de20c4e4b49493;hb=b49e3982502f5e483422960dc11be967d7c790f4;hp=9f6e978dce5322380140cb664b8219d963919bef;hpb=97c68cc2b1f302521244e139a8a49019702038e7;p=ardour.git diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index 9f6e978dce..6b1612a3ec 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -288,7 +288,7 @@ Editor::ruler_button_release (GdkEventButton* ev) stop_canvas_autoscroll(); - framepos_t where = window_event_frame ((GdkEvent*) ev); + framepos_t where = window_event_sample ((GdkEvent*) ev); snap_to (where); popup_ruler_menu (where); @@ -324,7 +324,11 @@ Editor::ruler_mouse_motion (GdkEventMotion* ev) } if (_drags->active ()) { - _drags->window_motion_handler (reinterpret_cast (ev), false); + GdkEventMotion canvas_ev = *ev; + ArdourCanvas::Duple d = _track_canvas->window_to_canvas (ArdourCanvas::Duple (ev->x, ev->y)); + canvas_ev.x = rint (d.x); + canvas_ev.y = rint (d.y); + _drags->window_motion_handler (reinterpret_cast (&canvas_ev), false); } return true; @@ -801,12 +805,12 @@ Editor::update_ruler_visibility () tbpos += timebar_height * videotl_bar_height; tbgpos += timebar_height * videotl_bar_height; visible_timebars+=videotl_bar_height; - queue_visual_videotimeline_update(); + queue_visual_videotimeline_update(); } else { videotl_group->hide(); videotl_group->hide(); videotl_label.hide(); - update_video_timeline(true); + update_video_timeline(true); } ruler_label_vbox.set_size_request (-1, (int)(timebar_height * visible_rulers)); @@ -1850,13 +1854,13 @@ sample_to_clock_parts ( framepos_t sample, long millisecs; left = sample; - hrs = left / (sample_rate * 60 * 60); - left -= hrs * sample_rate * 60 * 60; - mins = left / (sample_rate * 60); - left -= mins * sample_rate * 60; - secs = left / sample_rate; - left -= secs * sample_rate; - millisecs = left * 1000 / sample_rate; + hrs = left / (sample_rate * 60 * 60 * 1000); + left -= hrs * sample_rate * 60 * 60 * 1000; + mins = left / (sample_rate * 60 * 1000); + left -= mins * sample_rate * 60 * 1000; + secs = left / (sample_rate * 1000); + left -= secs * sample_rate * 1000; + millisecs = left / sample_rate; *millisecs_p = millisecs; *secs_p = secs; @@ -1876,7 +1880,7 @@ Editor::set_minsec_ruler_scale (framepos_t lower, framepos_t upper) return; } - fr = _session->frame_rate(); + fr = _session->frame_rate() * 1000; /* to prevent 'flashing' */ if (lower > (spacer = (framepos_t)(128 * Editor::get_current_zoom ()))) { @@ -1885,7 +1889,7 @@ Editor::set_minsec_ruler_scale (framepos_t lower, framepos_t upper) lower = 0; } upper += spacer; - framecnt_t const range = upper - lower; + framecnt_t const range = (upper - lower) * 1000; if (range < (fr / 50)) { minsec_mark_interval = fr / 1000; /* show 1/1000 seconds */ @@ -1985,7 +1989,7 @@ Editor::metric_get_minsec (GtkCustomRulerMark **marks, gdouble lower, gdouble /* } *marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * minsec_nmarks); - pos = ((((framepos_t) floor(lower)) + (minsec_mark_interval/2))/minsec_mark_interval) * minsec_mark_interval; + pos = (((1000 * (framepos_t) floor(lower)) + (minsec_mark_interval/2))/minsec_mark_interval) * minsec_mark_interval; switch (minsec_ruler_scale) { case minsec_show_seconds: for (n = 0; n < minsec_nmarks; pos += minsec_mark_interval, ++n) { @@ -2002,7 +2006,7 @@ Editor::metric_get_minsec (GtkCustomRulerMark **marks, gdouble lower, gdouble /* (*marks)[n].style = GtkCustomRulerMarkMicro; } (*marks)[n].label = g_strdup (buf); - (*marks)[n].position = pos; + (*marks)[n].position = pos/1000.0; } break; case minsec_show_minutes: @@ -2020,7 +2024,7 @@ Editor::metric_get_minsec (GtkCustomRulerMark **marks, gdouble lower, gdouble /* (*marks)[n].style = GtkCustomRulerMarkMicro; } (*marks)[n].label = g_strdup (buf); - (*marks)[n].position = pos; + (*marks)[n].position = pos/1000.0; } break; case minsec_show_hours: @@ -2034,14 +2038,14 @@ Editor::metric_get_minsec (GtkCustomRulerMark **marks, gdouble lower, gdouble /* (*marks)[n].style = GtkCustomRulerMarkMicro; } (*marks)[n].label = g_strdup (buf); - (*marks)[n].position = pos; + (*marks)[n].position = pos/1000.0; } break; case minsec_show_frames: for (n = 0; n < minsec_nmarks; pos += minsec_mark_interval, ++n) { sample_to_clock_parts (pos, _session->frame_rate(), &hrs, &mins, &secs, &millisecs); if (millisecs % minsec_mark_modulo == 0) { - if (secs == 0) { + if (millisecs == 0) { (*marks)[n].style = GtkCustomRulerMarkMajor; } else { (*marks)[n].style = GtkCustomRulerMarkMinor; @@ -2052,7 +2056,7 @@ Editor::metric_get_minsec (GtkCustomRulerMark **marks, gdouble lower, gdouble /* (*marks)[n].style = GtkCustomRulerMarkMicro; } (*marks)[n].label = g_strdup (buf); - (*marks)[n].position = pos; + (*marks)[n].position = pos/1000.0; } break; }