summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mini_timeline.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-12-18 00:06:39 +0100
committerRobin Gareus <robin@gareus.org>2016-12-18 00:06:39 +0100
commitf80fb029e22a5bde240b523370b831fbe3e620d8 (patch)
tree1ddf682236ac0e874477a0f04f8f1c366cca3c14 /gtk2_ardour/mini_timeline.cc
parent7688d22456b2bb480fd7f0b9c094231d6c536947 (diff)
Prepare configurable mini-timeline time-span
Diffstat (limited to 'gtk2_ardour/mini_timeline.cc')
-rw-r--r--gtk2_ardour/mini_timeline.cc18
1 files changed, 16 insertions, 2 deletions
diff --git a/gtk2_ardour/mini_timeline.cc b/gtk2_ardour/mini_timeline.cc
index a3e3b8d324..102b5ff10f 100644
--- a/gtk2_ardour/mini_timeline.cc
+++ b/gtk2_ardour/mini_timeline.cc
@@ -67,6 +67,7 @@ void
MiniTimeline::session_going_away ()
{
super_rapid_connection.disconnect ();
+ session_connection.disconnect ();
SessionHandlePtr::session_going_away ();
_jumplist.clear ();
}
@@ -83,6 +84,11 @@ MiniTimeline::set_session (Session* s)
super_rapid_connection = Timers::super_rapid_connect (
sigc::mem_fun (*this, &MiniTimeline::super_rapid_update)
);
+ _session->config.ParameterChanged.connect (session_connection,
+ invalidator (*this),
+ boost::bind (&MiniTimeline::parameter_changed, this, _1), gui_context()
+ );
+
_jumplist.clear ();
}
@@ -112,6 +118,14 @@ MiniTimeline::set_colors ()
}
void
+MiniTimeline::parameter_changed (std::string const& p)
+{
+ if (p == "minitimeline-span") {
+ update_minitimeline ();
+ }
+}
+
+void
MiniTimeline::on_size_request (Gtk::Requisition* req)
{
req->width = req->height = 0;
@@ -321,7 +335,7 @@ MiniTimeline::render (cairo_t* cr, cairo_rectangle_t*)
/* time */
- const framepos_t time_span = 60; /* left+right: 2 minutes */
+ const framepos_t time_span = _session->config.get_minitimeline_span () / 2;
const framepos_t time_span_samples = time_span * _session->nominal_frame_rate ();
const framepos_t time_granularity = _session->nominal_frame_rate () * ceil (2. * time_span / n_labels);
const framepos_t p = _last_update_frame;
@@ -446,7 +460,7 @@ MiniTimeline::on_button_release_event (GdkEventButton *ev)
}
} else if (ev->button == 1) {
// copy from ::render() // TODO consolidate
- const framepos_t time_span = 60; /* left+right: 2 minutes */
+ const framepos_t time_span = _session->config.get_minitimeline_span () / 2;
const framepos_t time_span_samples = time_span * _session->nominal_frame_rate ();
const framepos_t p = _last_update_frame;
const double px_per_sample = get_width () / (2. * time_span_samples);