summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorNick Mainsbridge <beatroute@iprimus.com.au>2008-10-22 06:41:51 +0000
committerNick Mainsbridge <beatroute@iprimus.com.au>2008-10-22 06:41:51 +0000
commit6dce8160cff198ebbf1c8b7e045d2b2eac91624f (patch)
tree75bf65f768996c0e5015eda27801ce47eaa26cf7 /gtk2_ardour
parent8665fd32e61c81ee54833cf76c493d5af8fc8478 (diff)
Don't tear down and rebuild all rulers on each visibility change, fix duplicated secondary-m in SAE bindings, avoid dirty master channel updates on osx, simplify ruler scale calculation params.
git-svn-id: svn://localhost/ardour2/branches/3.0@3995 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/SAE-de.bindings.in2
-rw-r--r--gtk2_ardour/editor.cc139
-rw-r--r--gtk2_ardour/editor_rulers.cc214
-rw-r--r--gtk2_ardour/mixer_ui.cc6
4 files changed, 191 insertions, 170 deletions
diff --git a/gtk2_ardour/SAE-de.bindings.in b/gtk2_ardour/SAE-de.bindings.in
index 8d5f19c08a..b03738b7d4 100644
--- a/gtk2_ardour/SAE-de.bindings.in
+++ b/gtk2_ardour/SAE-de.bindings.in
@@ -106,7 +106,7 @@
(gtk_accel_path "<Actions>/Main/AddTrackBus" "<%PRIMARY%><%TERTIARY%>n")
(gtk_accel_path "<Actions>/Common/goto-mixer" "<%SECONDARY%>m")
(gtk_accel_path "<Actions>/Editor/add-location-from-playhead" "KP_Enter")
-(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "<%SECONDARY%>m")
+(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "m")
;; arrow keys, navigation etc.
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index d1bad2d2bd..8b1bbef831 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -260,12 +260,6 @@ Editor::Editor ()
selection = new Selection (this);
cut_buffer = new Selection (this);
- selection->TimeChanged.connect (mem_fun(*this, &Editor::time_selection_changed));
- selection->TracksChanged.connect (mem_fun(*this, &Editor::track_selection_changed));
- selection->RegionsChanged.connect (mem_fun(*this, &Editor::region_selection_changed));
- selection->PointsChanged.connect (mem_fun(*this, &Editor::point_selection_changed));
- selection->MarkersChanged.connect (mem_fun(*this, &Editor::marker_selection_changed));
-
clicked_regionview = 0;
clicked_axisview = 0;
clicked_routeview = 0;
@@ -384,108 +378,121 @@ Editor::Editor ()
set_zoom_focus (ZoomFocusLeft);
zoom_range_clock.ValueChanged.connect (mem_fun(*this, &Editor::zoom_adjustment_changed));
- initialize_rulers ();
- initialize_canvas ();
-
- edit_controls_vbox.set_spacing (0);
- horizontal_adjustment.signal_value_changed().connect (mem_fun(*this, &Editor::scroll_canvas_horizontally), false);
- vertical_adjustment.signal_value_changed().connect (mem_fun(*this, &Editor::tie_vertical_scrolling), true);
- track_canvas->signal_map_event().connect (mem_fun (*this, &Editor::track_canvas_map_handler));
-
- controls_layout.add (edit_controls_vbox);
- controls_layout.set_name ("EditControlsBase");
- controls_layout.add_events (Gdk::SCROLL_MASK);
- controls_layout.signal_scroll_event().connect (mem_fun(*this, &Editor::control_layout_scroll), false);
-
- controls_layout.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
- controls_layout.signal_button_release_event().connect (mem_fun(*this, &Editor::edit_controls_button_release));
- controls_layout_size_request_connection = controls_layout.signal_size_request().connect (mem_fun (*this, &Editor::controls_layout_size_request));
-
- edit_vscrollbar.set_adjustment (vertical_adjustment);
- edit_hscrollbar.set_adjustment (horizontal_adjustment);
-
- edit_hscrollbar.signal_button_press_event().connect (mem_fun(*this, &Editor::hscrollbar_button_press), false);
- edit_hscrollbar.signal_button_release_event().connect (mem_fun(*this, &Editor::hscrollbar_button_release), false);
- edit_hscrollbar.signal_size_allocate().connect (mem_fun(*this, &Editor::hscrollbar_allocate));
-
- edit_hscrollbar.set_name ("EditorHScrollbar");
-
- build_cursors ();
- setup_toolbar ();
- setup_midi_toolbar ();
-
- edit_point_clock.ValueChanged.connect (mem_fun(*this, &Editor::edit_point_clock_changed));
-
- ArdourCanvas::Canvas* time_pad = manage(new ArdourCanvas::Canvas());
- ArdourCanvas::SimpleLine* pad_line_1 = manage(new ArdourCanvas::SimpleLine(*time_pad->root(),
- 0.0, 1.0, 100.0, 1.0));
- pad_line_1->property_color_rgba() = 0xFF0000FF;
- pad_line_1->show();
- time_pad->show();
-
- time_canvas_vbox.pack_start (*_ruler_separator, false, false);
- time_canvas_vbox.pack_start (*minsec_ruler, false, false);
- time_canvas_vbox.pack_start (*smpte_ruler, false, false);
- time_canvas_vbox.pack_start (*frames_ruler, false, false);
- time_canvas_vbox.pack_start (*bbt_ruler, false, false);
- //time_canvas_vbox.set_size_request (-1, (int)(timebar_height * visible_timebars) + 2);
- time_canvas_vbox.set_size_request (-1, -1);
bbt_label.set_name ("EditorTimeButton");
bbt_label.set_size_request (-1, (int)timebar_height);
bbt_label.set_alignment (1.0, 0.5);
bbt_label.set_padding (5,0);
+ bbt_label.hide ();
+ bbt_label.set_no_show_all();
minsec_label.set_name ("EditorTimeButton");
minsec_label.set_size_request (-1, (int)timebar_height);
minsec_label.set_alignment (1.0, 0.5);
minsec_label.set_padding (5,0);
+ minsec_label.hide ();
+ minsec_label.set_no_show_all();
smpte_label.set_name ("EditorTimeButton");
smpte_label.set_size_request (-1, (int)timebar_height);
smpte_label.set_alignment (1.0, 0.5);
smpte_label.set_padding (5,0);
+ smpte_label.hide ();
+ smpte_label.set_no_show_all();
frame_label.set_name ("EditorTimeButton");
frame_label.set_size_request (-1, (int)timebar_height);
frame_label.set_alignment (1.0, 0.5);
frame_label.set_padding (5,0);
+ frame_label.hide ();
+ frame_label.set_no_show_all();
tempo_label.set_name ("EditorTimeButton");
tempo_label.set_size_request (-1, (int)timebar_height);
tempo_label.set_alignment (1.0, 0.5);
tempo_label.set_padding (5,0);
+ tempo_label.hide();
+ tempo_label.set_no_show_all();
meter_label.set_name ("EditorTimeButton");
meter_label.set_size_request (-1, (int)timebar_height);
meter_label.set_alignment (1.0, 0.5);
meter_label.set_padding (5,0);
+ meter_label.hide();
+ meter_label.set_no_show_all();
mark_label.set_name ("EditorTimeButton");
mark_label.set_size_request (-1, (int)timebar_height);
mark_label.set_alignment (1.0, 0.5);
mark_label.set_padding (5,0);
+ mark_label.hide();
+ mark_label.set_no_show_all();
cd_mark_label.set_name ("EditorTimeButton");
cd_mark_label.set_size_request (-1, (int)timebar_height);
cd_mark_label.set_alignment (1.0, 0.5);
cd_mark_label.set_padding (5,0);
+ cd_mark_label.hide();
+ cd_mark_label.set_no_show_all();
range_mark_label.set_name ("EditorTimeButton");
range_mark_label.set_size_request (-1, (int)timebar_height);
range_mark_label.set_alignment (1.0, 0.5);
range_mark_label.set_padding (5,0);
+ range_mark_label.hide();
+ range_mark_label.set_no_show_all();
transport_mark_label.set_name ("EditorTimeButton");
transport_mark_label.set_size_request (-1, (int)timebar_height);
transport_mark_label.set_alignment (1.0, 0.5);
transport_mark_label.set_padding (5,0);
+ transport_mark_label.hide();
+ transport_mark_label.set_no_show_all();
+
+ initialize_rulers ();
+ initialize_canvas ();
- ruler_label_vbox.pack_start (minsec_label, false, false);
- ruler_label_vbox.pack_start (smpte_label, false, false);
- ruler_label_vbox.pack_start (frame_label, false, false);
- ruler_label_vbox.pack_start (bbt_label, false, false);
+ selection->TimeChanged.connect (mem_fun(*this, &Editor::time_selection_changed));
+ selection->TracksChanged.connect (mem_fun(*this, &Editor::track_selection_changed));
+ selection->RegionsChanged.connect (mem_fun(*this, &Editor::region_selection_changed));
+ selection->PointsChanged.connect (mem_fun(*this, &Editor::point_selection_changed));
+ selection->MarkersChanged.connect (mem_fun(*this, &Editor::marker_selection_changed));
+
+ edit_controls_vbox.set_spacing (0);
+ horizontal_adjustment.signal_value_changed().connect (mem_fun(*this, &Editor::scroll_canvas_horizontally), false);
+ vertical_adjustment.signal_value_changed().connect (mem_fun(*this, &Editor::tie_vertical_scrolling), true);
+ track_canvas->signal_map_event().connect (mem_fun (*this, &Editor::track_canvas_map_handler));
+
+ controls_layout.add (edit_controls_vbox);
+ controls_layout.set_name ("EditControlsBase");
+ controls_layout.add_events (Gdk::SCROLL_MASK);
+ controls_layout.signal_scroll_event().connect (mem_fun(*this, &Editor::control_layout_scroll), false);
+ controls_layout.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
+ controls_layout.signal_button_release_event().connect (mem_fun(*this, &Editor::edit_controls_button_release));
+ controls_layout_size_request_connection = controls_layout.signal_size_request().connect (mem_fun (*this, &Editor::controls_layout_size_request));
+
+ edit_vscrollbar.set_adjustment (vertical_adjustment);
+ edit_hscrollbar.set_adjustment (horizontal_adjustment);
+
+ edit_hscrollbar.signal_button_press_event().connect (mem_fun(*this, &Editor::hscrollbar_button_press), false);
+ edit_hscrollbar.signal_button_release_event().connect (mem_fun(*this, &Editor::hscrollbar_button_release), false);
+ edit_hscrollbar.signal_size_allocate().connect (mem_fun(*this, &Editor::hscrollbar_allocate));
+
+ edit_hscrollbar.set_name ("EditorHScrollbar");
+
+ build_cursors ();
+ setup_toolbar ();
+ setup_midi_toolbar ();
+
+ edit_point_clock.ValueChanged.connect (mem_fun(*this, &Editor::edit_point_clock_changed));
+
+ ArdourCanvas::Canvas* time_pad = manage(new ArdourCanvas::Canvas());
+ ArdourCanvas::SimpleLine* pad_line_1 = manage(new ArdourCanvas::SimpleLine(*time_pad->root(),
+ 0.0, 1.0, 100.0, 1.0));
+ pad_line_1->property_color_rgba() = 0xFF0000FF;
+ pad_line_1->show();
+ time_pad->show();
+
+ //time_canvas_vbox.set_size_request (-1, (int)(timebar_height * visible_timebars) + 2);
+ //time_canvas_vbox.set_size_request (-1, -1);
+
ruler_label_event_box.add (ruler_label_vbox);
ruler_label_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
ruler_label_event_box.set_name ("TimebarLabelBase");
ruler_label_event_box.signal_button_release_event().connect (mem_fun(*this, &Editor::ruler_label_button_release));
- time_button_vbox.pack_start (meter_label, false, false);
- time_button_vbox.pack_start (tempo_label, false, false);
- time_button_vbox.pack_start (mark_label, false, false);
-
time_button_event_box.add (time_button_vbox);
time_button_event_box.set_name ("TimebarLabelBase");
time_button_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
@@ -938,10 +945,10 @@ void
Editor::show_window ()
{
show_all_children ();
-
+
/* re-hide editor list if necessary */
editor_list_button_toggled ();
-
+
/* now reset all audio_time_axis heights, because widgets might need
to be re-hidden
*/
@@ -952,7 +959,7 @@ Editor::show_window ()
tv = (static_cast<TimeAxisView*>(*i));
tv->reset_height ();
}
-
+
present ();
}
@@ -2301,7 +2308,7 @@ Editor::set_snap_to (SnapType st)
case SnapToAEighthBeat:
case SnapToAQuarterBeat:
case SnapToAThirdBeat:
- compute_bbt_ruler_scale (leftmost_frame, leftmost_frame + (nframes_t)(edit_packer.get_width() * frames_per_unit));
+ compute_bbt_ruler_scale (leftmost_frame, leftmost_frame + current_page_frames());
update_tempo_based_rulers ();
break;
@@ -4659,8 +4666,8 @@ Editor::idle_visual_changer ()
set_frames_per_unit (pending_visual_change.frames_per_unit);
compute_fixed_ruler_scale ();
- compute_current_bbt_points(pending_visual_change.time_origin, pending_visual_change.time_origin + (nframes_t)(edit_packer.get_width() * pending_visual_change.frames_per_unit));
- compute_bbt_ruler_scale (pending_visual_change.time_origin, pending_visual_change.time_origin + (nframes_t)(edit_packer.get_width() * pending_visual_change.frames_per_unit));
+ compute_current_bbt_points(pending_visual_change.time_origin, pending_visual_change.time_origin + current_page_frames());
+ compute_bbt_ruler_scale (pending_visual_change.time_origin, pending_visual_change.time_origin + current_page_frames());
update_tempo_based_rulers ();
}
if (p & VisualChange::TimeOrigin) {
diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc
index 6f7b51f916..f463d914f0 100644
--- a/gtk2_ardour/editor_rulers.cc
+++ b/gtk2_ardour/editor_rulers.cc
@@ -58,37 +58,96 @@ Editor::initialize_rulers ()
{
ruler_editor = this;
ruler_grabbed_widget = 0;
-
+
_ruler_separator = new Gtk::HSeparator();
_ruler_separator->set_size_request(-1, 2);
_ruler_separator->set_name("TimebarPadding");
_ruler_separator->show();
-
+
_smpte_ruler = gtk_custom_hruler_new ();
smpte_ruler = Glib::wrap (_smpte_ruler);
smpte_ruler->set_name ("SMPTERuler");
smpte_ruler->set_size_request (-1, (int)timebar_height);
gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_smpte_ruler), &ruler_metrics[ruler_metric_smpte]);
-
+ smpte_ruler->hide ();
+ smpte_ruler->set_no_show_all();
+ smpte_nmarks = 0;
+
_bbt_ruler = gtk_custom_hruler_new ();
bbt_ruler = Glib::wrap (_bbt_ruler);
bbt_ruler->set_name ("BBTRuler");
bbt_ruler->set_size_request (-1, (int)timebar_height);
gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_bbt_ruler), &ruler_metrics[ruler_metric_bbt]);
+ bbt_ruler->hide ();
+ bbt_ruler->set_no_show_all();
+ bbt_nmarks = 0;
_frames_ruler = gtk_custom_hruler_new ();
frames_ruler = Glib::wrap (_frames_ruler);
frames_ruler->set_name ("FramesRuler");
frames_ruler->set_size_request (-1, (int)timebar_height);
gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_frames_ruler), &ruler_metrics[ruler_metric_frames]);
+ frames_ruler->hide ();
+ frames_ruler->set_no_show_all();
_minsec_ruler = gtk_custom_hruler_new ();
minsec_ruler = Glib::wrap (_minsec_ruler);
minsec_ruler->set_name ("MinSecRuler");
minsec_ruler->set_size_request (-1, (int)timebar_height);
gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_minsec_ruler), &ruler_metrics[ruler_metric_minsec]);
+ minsec_ruler->hide ();
+ minsec_ruler->set_no_show_all();
+ minsec_nmarks = 0;
+
+ using namespace Box_Helpers;
+ BoxList & ruler_lab_children = ruler_label_vbox.children();
+ BoxList & ruler_children = time_canvas_vbox.children();
+ BoxList & lab_children = time_button_vbox.children();
+
+ BoxList::iterator canvaspos = ruler_children.begin();
+
+ lab_children.push_back (Element(meter_label, PACK_SHRINK, PACK_START));
+ lab_children.push_back (Element(tempo_label, PACK_SHRINK, PACK_START));
+ lab_children.push_back (Element(range_mark_label, PACK_SHRINK, PACK_START));
+ lab_children.push_back (Element(transport_mark_label, PACK_SHRINK, PACK_START));
+ lab_children.push_back (Element(cd_mark_label, PACK_SHRINK, PACK_START));
+ lab_children.push_back (Element(mark_label, PACK_SHRINK, PACK_START));
+
+ ruler_lab_children.push_back (Element(minsec_label, PACK_SHRINK, PACK_START));
+ ruler_children.insert (canvaspos, Element(*minsec_ruler, PACK_SHRINK, PACK_START));
+ ruler_lab_children.push_back (Element(smpte_label, PACK_SHRINK, PACK_START));
+ ruler_children.insert (canvaspos, Element(*smpte_ruler, PACK_SHRINK, PACK_START));
+ ruler_lab_children.push_back (Element(frame_label, PACK_SHRINK, PACK_START));
+ ruler_children.insert (canvaspos, Element(*frames_ruler, PACK_SHRINK, PACK_START));
+ ruler_lab_children.push_back (Element(bbt_label, PACK_SHRINK, PACK_START));
+ ruler_children.insert (canvaspos, Element(*bbt_ruler, PACK_SHRINK, PACK_START));
+
+ smpte_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
+ bbt_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
+ frames_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
+ minsec_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
+
+ smpte_ruler->signal_button_release_event().connect (mem_fun(*this, &Editor::ruler_button_release));
+ bbt_ruler->signal_button_release_event().connect (mem_fun(*this, &Editor::ruler_button_release));
+ frames_ruler->signal_button_release_event().connect (mem_fun(*this, &Editor::ruler_button_release));
+ minsec_ruler->signal_button_release_event().connect (mem_fun(*this, &Editor::ruler_button_release));
+
+ smpte_ruler->signal_button_press_event().connect (mem_fun(*this, &Editor::ruler_button_press));
+ bbt_ruler->signal_button_press_event().connect (mem_fun(*this, &Editor::ruler_button_press));
+ frames_ruler->signal_button_press_event().connect (mem_fun(*this, &Editor::ruler_button_press));
+ minsec_ruler->signal_button_press_event().connect (mem_fun(*this, &Editor::ruler_button_press));
+
+ smpte_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
+ bbt_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
+ frames_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
+ minsec_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
- visible_timebars = 1; /*this will be changed below */
+ smpte_ruler->signal_scroll_event().connect (mem_fun(*this, &Editor::ruler_scroll));
+ bbt_ruler->signal_scroll_event().connect (mem_fun(*this, &Editor::ruler_scroll));
+ frames_ruler->signal_scroll_event().connect (mem_fun(*this, &Editor::ruler_scroll));
+ minsec_ruler->signal_scroll_event().connect (mem_fun(*this, &Editor::ruler_scroll));
+
+ visible_timebars = 0; /*this will be changed below */
ruler_pressed_button = 0;
canvas_timebars_vsize = 0;
}
@@ -558,10 +617,6 @@ Editor::restore_ruler_visibility ()
void
Editor::update_ruler_visibility ()
{
- using namespace Box_Helpers;
- BoxList & lab_children = time_button_vbox.children();
- BoxList & ruler_lab_children = ruler_label_vbox.children();
- BoxList & ruler_children = time_canvas_vbox.children();
int visible_rulers = 0;
if (no_ruler_shown_update) {
@@ -570,98 +625,56 @@ Editor::update_ruler_visibility ()
visible_timebars = 0;
- lab_children.clear();
- ruler_lab_children.clear();
-
- // leave the last one (the time_canvas) intact
- while (ruler_children.size() > 0) {
- ruler_children.pop_front();
- }
-
- BoxList::iterator canvaspos = ruler_children.begin();
-
- _smpte_ruler = gtk_custom_hruler_new ();
- smpte_ruler = Glib::wrap (_smpte_ruler);
- smpte_ruler->set_name ("SMPTERuler");
- smpte_ruler->set_size_request (-1, (int)timebar_height);
- gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_smpte_ruler), &ruler_metrics[ruler_metric_smpte]);
-
- _bbt_ruler = gtk_custom_hruler_new ();
- bbt_ruler = Glib::wrap (_bbt_ruler);
- bbt_ruler->set_name ("BBTRuler");
- bbt_ruler->set_size_request (-1, (int)timebar_height);
- gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_bbt_ruler), &ruler_metrics[ruler_metric_bbt]);
-
- _frames_ruler = gtk_custom_hruler_new ();
- frames_ruler = Glib::wrap (_frames_ruler);
- frames_ruler->set_name ("FramesRuler");
- frames_ruler->set_size_request (-1, (int)timebar_height);
- gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_frames_ruler), &ruler_metrics[ruler_metric_frames]);
-
- _minsec_ruler = gtk_custom_hruler_new ();
- minsec_ruler = Glib::wrap (_minsec_ruler);
- minsec_ruler->set_name ("MinSecRuler");
- minsec_ruler->set_size_request (-1, (int)timebar_height);
- gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_minsec_ruler), &ruler_metrics[ruler_metric_minsec]);
-
- smpte_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
- bbt_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
- frames_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
- minsec_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
-
- smpte_ruler->signal_button_release_event().connect (mem_fun(*this, &Editor::ruler_button_release));
- bbt_ruler->signal_button_release_event().connect (mem_fun(*this, &Editor::ruler_button_release));
- frames_ruler->signal_button_release_event().connect (mem_fun(*this, &Editor::ruler_button_release));
- minsec_ruler->signal_button_release_event().connect (mem_fun(*this, &Editor::ruler_button_release));
-
- smpte_ruler->signal_button_press_event().connect (mem_fun(*this, &Editor::ruler_button_press));
- bbt_ruler->signal_button_press_event().connect (mem_fun(*this, &Editor::ruler_button_press));
- frames_ruler->signal_button_press_event().connect (mem_fun(*this, &Editor::ruler_button_press));
- minsec_ruler->signal_button_press_event().connect (mem_fun(*this, &Editor::ruler_button_press));
-
- smpte_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
- bbt_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
- frames_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
- minsec_ruler->signal_motion_notify_event().connect (mem_fun(*this, &Editor::ruler_mouse_motion));
-
- smpte_ruler->signal_scroll_event().connect (mem_fun(*this, &Editor::ruler_scroll));
- bbt_ruler->signal_scroll_event().connect (mem_fun(*this, &Editor::ruler_scroll));
- frames_ruler->signal_scroll_event().connect (mem_fun(*this, &Editor::ruler_scroll));
- minsec_ruler->signal_scroll_event().connect (mem_fun(*this, &Editor::ruler_scroll));
-
- ruler_children.insert (canvaspos, Element(*_ruler_separator, PACK_SHRINK, PACK_START));
-
if (ruler_minsec_action->get_active()) {
- ruler_lab_children.push_back (Element(minsec_label, PACK_SHRINK, PACK_START));
- ruler_children.insert (canvaspos, Element(*minsec_ruler, PACK_SHRINK, PACK_START));
visible_rulers++;
+ minsec_label.show ();
+ minsec_ruler->show ();
+ } else {
+ minsec_label.hide ();
+ minsec_ruler->hide ();
}
if (ruler_timecode_action->get_active()) {
- ruler_lab_children.push_back (Element(smpte_label, PACK_SHRINK, PACK_START));
- ruler_children.insert (canvaspos, Element(*smpte_ruler, PACK_SHRINK, PACK_START));
visible_rulers++;
+ smpte_label.show ();
+ smpte_ruler->show ();
+ } else {
+ smpte_label.hide ();
+ smpte_ruler->hide ();
}
if (ruler_samples_action->get_active()) {
- ruler_lab_children.push_back (Element(frame_label, PACK_SHRINK, PACK_START));
- ruler_children.insert (canvaspos, Element(*frames_ruler, PACK_SHRINK, PACK_START));
visible_rulers++;
+ frame_label.show ();
+ frames_ruler->show ();
+ } else {
+ frame_label.hide ();
+ frames_ruler->hide ();
}
if (ruler_bbt_action->get_active()) {
- ruler_lab_children.push_back (Element(bbt_label, PACK_SHRINK, PACK_START));
- ruler_children.insert (canvaspos, Element(*bbt_ruler, PACK_SHRINK, PACK_START));
visible_rulers++;
+ bbt_label.show ();
+ bbt_ruler->show ();
+ } else {
+ bbt_label.hide ();
+ bbt_ruler->hide ();
}
double tbpos = 0.0;
double tbgpos = 0.0;
double old_unit_pos;
-
- if (ruler_meter_action->get_active()) {
- lab_children.push_back (Element(meter_label, PACK_SHRINK, PACK_START));
+#ifdef GTKOSX
+ /* gtk update probs require this (damn) */
+ meter_label.hide();
+ tempo_label.hide();
+ range_mark_label.hide();
+ transport_mark_label.hide();
+ cd_mark_label.hide();
+ mark_label.hide();
+#endif
+ if (ruler_meter_action->get_active()) {
old_unit_pos = meter_group->property_y();
if (tbpos != old_unit_pos) {
meter_group->move ( 0.0, tbpos - old_unit_pos);
@@ -669,19 +682,20 @@ Editor::update_ruler_visibility ()
old_unit_pos = meter_bar_group->property_y();
if (tbgpos != old_unit_pos) {
meter_bar_group->move ( 0.0, tbgpos - old_unit_pos);
- }
+ }
meter_bar_group->show();
meter_group->show();
+ meter_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
meter_bar_group->hide();
meter_group->hide();
+ meter_label.hide();
}
if (ruler_tempo_action->get_active()) {
- lab_children.push_back (Element(tempo_label, PACK_SHRINK, PACK_START));
old_unit_pos = tempo_group->property_y();
if (tbpos != old_unit_pos) {
tempo_group->move(0.0, tbpos - old_unit_pos);
@@ -692,16 +706,17 @@ Editor::update_ruler_visibility ()
}
tempo_bar_group->show();
tempo_group->show();
+ tempo_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
tempo_bar_group->hide();
tempo_group->hide();
+ tempo_label.hide();
}
if (!Profile->get_sae() && ruler_range_action->get_active()) {
- lab_children.push_back (Element(range_mark_label, PACK_SHRINK, PACK_START));
old_unit_pos = range_marker_group->property_y();
if (tbpos != old_unit_pos) {
range_marker_group->move (0.0, tbpos - old_unit_pos);
@@ -712,16 +727,17 @@ Editor::update_ruler_visibility ()
}
range_marker_bar_group->show();
range_marker_group->show();
+ range_mark_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
range_marker_bar_group->hide();
range_marker_group->hide();
+ range_mark_label.hide();
}
if (ruler_loop_punch_action->get_active()) {
- lab_children.push_back (Element(transport_mark_label, PACK_SHRINK, PACK_START));
old_unit_pos = transport_marker_group->property_y();
if (tbpos != old_unit_pos) {
transport_marker_group->move ( 0.0, tbpos - old_unit_pos);
@@ -732,16 +748,17 @@ Editor::update_ruler_visibility ()
}
transport_marker_bar_group->show();
transport_marker_group->show();
+ transport_mark_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
transport_marker_bar_group->hide();
transport_marker_group->hide();
+ transport_mark_label.hide();
}
if (ruler_cd_marker_action->get_active()) {
- lab_children.push_back (Element(cd_mark_label, PACK_SHRINK, PACK_START));
old_unit_pos = cd_marker_group->property_y();
if (tbpos != old_unit_pos) {
cd_marker_group->move (0.0, tbpos - old_unit_pos);
@@ -752,6 +769,7 @@ Editor::update_ruler_visibility ()
}
cd_marker_bar_group->show();
cd_marker_group->show();
+ cd_mark_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
@@ -760,12 +778,12 @@ Editor::update_ruler_visibility ()
} else {
cd_marker_bar_group->hide();
cd_marker_group->hide();
+ cd_mark_label.hide();
// make sure all cd markers show up in their respective places
update_cd_marker_display();
}
if (ruler_marker_action->get_active()) {
- lab_children.push_back (Element(mark_label, PACK_SHRINK, PACK_START));
old_unit_pos = marker_group->property_y();
if (tbpos != old_unit_pos) {
marker_group->move ( 0.0, tbpos - old_unit_pos);
@@ -776,14 +794,16 @@ Editor::update_ruler_visibility ()
}
marker_bar_group->show();
marker_group->show();
+ mark_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
marker_bar_group->hide();
marker_group->hide();
+ mark_label.hide();
}
-
+
gdouble old_canvas_timebars_vsize = canvas_timebars_vsize;
canvas_timebars_vsize = (timebar_height * visible_timebars) - 1;
gdouble vertical_pos_delta = canvas_timebars_vsize - old_canvas_timebars_vsize;
@@ -798,21 +818,11 @@ Editor::update_ruler_visibility ()
_trackview_group->move (0, 0);
last_trackview_group_vertical_offset = get_trackview_group_vertical_offset ();
}
-
+
ruler_label_vbox.set_size_request (-1, (int)(timebar_height * visible_rulers));
-
time_canvas_vbox.set_size_request (-1,-1);
- time_canvas_event_box.queue_resize();
- compute_fixed_ruler_scale();
- update_fixed_rulers();
-
- time_canvas_event_box.show_all();
- ruler_label_event_box.show_all();
- time_button_event_box.show_all();
-
- compute_current_bbt_points (leftmost_frame, leftmost_frame + (nframes64_t)(edit_packer.get_width() * frames_per_unit));
- compute_bbt_ruler_scale (leftmost_frame, leftmost_frame + (nframes64_t)(edit_packer.get_width() * frames_per_unit));
+ update_fixed_rulers();
redisplay_tempo (false);
}
@@ -841,11 +851,11 @@ Editor::compute_fixed_ruler_scale ()
}
if (ruler_timecode_action->get_active()) {
- set_smpte_ruler_scale (leftmost_frame, leftmost_frame + (edit_packer.get_width() * frames_per_unit) );
+ set_smpte_ruler_scale (leftmost_frame, leftmost_frame + current_page_frames() );
}
if (ruler_minsec_action->get_active()) {
- set_minsec_ruler_scale (leftmost_frame, leftmost_frame + (edit_packer.get_width() * frames_per_unit) );
+ set_minsec_ruler_scale (leftmost_frame, leftmost_frame + current_page_frames() );
}
}
@@ -862,7 +872,7 @@ Editor::update_fixed_rulers ()
ruler_metrics[ruler_metric_frames].units_per_pixel = frames_per_unit;
ruler_metrics[ruler_metric_minsec].units_per_pixel = frames_per_unit;
- rightmost_frame = leftmost_frame + current_page_frames ();
+ rightmost_frame = leftmost_frame + current_page_frames();
/* these force a redraw, which in turn will force execution of the metric callbacks
to compute the relevant ticks to display.
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 202a55ee1d..5b96cc03c4 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -190,8 +190,12 @@ Mixer_UI::Mixer_UI ()
list_vpacker.pack_start (rhs_pane1, true, true);
global_hpacker.pack_start (scroller, true, true);
+#ifdef GTKOSX
+ /* current gtk-quartz has dirty updates on borders like this one */
+ global_hpacker.pack_start (out_packer, false, false, 0);
+#else
global_hpacker.pack_start (out_packer, false, false, 12);
-
+#endif
list_hpane.add1(list_vpacker);
list_hpane.add2(global_hpacker);