Visual tweaks to Soundcloud panel
[ardour.git] / gtk2_ardour / editor_rulers.cc
index 9f6e978dce5322380140cb664b8219d963919bef..6b1612a3ecec54052b124c3ce8de20c4e4b49493 100644 (file)
@@ -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<GdkEvent*> (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<GdkEvent*> (&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;
        }