summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-02-20 19:49:43 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-02-20 19:49:43 +0000
commit7321f25043d87de1f391f5ff1aa69ebbb2fff149 (patch)
tree47d2f955675fdc9391431fbe47a55146e227b1e7
parent87bbf0f04f6abfeb1f0378ce939f5ca968834d73 (diff)
drop ruler_show[] in favor of specific editor actions; various new actions and menu support for new Tracks top level menu
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3089 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour-sae.menus30
-rw-r--r--gtk2_ardour/ardour.menus15
-rw-r--r--gtk2_ardour/audio_time_axis.cc10
-rw-r--r--gtk2_ardour/editor.h27
-rw-r--r--gtk2_ardour/editor_actions.cc112
-rw-r--r--gtk2_ardour/editor_markers.cc8
-rw-r--r--gtk2_ardour/editor_ops.cc148
-rw-r--r--gtk2_ardour/editor_rulers.cc250
-rw-r--r--gtk2_ardour/editor_selection.cc13
-rw-r--r--gtk2_ardour/splash.cc5
10 files changed, 442 insertions, 176 deletions
diff --git a/gtk2_ardour/ardour-sae.menus b/gtk2_ardour/ardour-sae.menus
index e8b8a20b5e..c4939f037a 100644
--- a/gtk2_ardour/ardour-sae.menus
+++ b/gtk2_ardour/ardour-sae.menus
@@ -27,6 +27,7 @@
</menu>
<menuitem action='ToggleOptionsEditor'/>
<menuitem action='About'/>
+ <menuitem action='Quit'/>
</menu>
<menu name='Transport' action='Transport'>
@@ -169,7 +170,20 @@
</menu>
</menu>
- <menu name='Regions' action='Regions'>
+ <menu action='TrackMenu'>
+ <menu action='TrackHeightMenu'>
+ <menuitem action='track-height-largest'/>
+ <menuitem action='track-height-large'/>
+ <menuitem action='track-height-larger'/>
+ <menuitem action='track-height-normal'/>
+ <menuitem action='track-height-smaller'/>
+ <menuitem action='track-height-small'/>
+ </menu>
+ <menuitem action='toggle-track-active'/>
+ <menuitem action='remove-track'/>
+ </menu>
+
+ <menu action='Regions'>
<menuitem action='insert-region'/>
<menuitem action='rename-region'/>
<menuitem action='auto-rename-region'/>
@@ -218,6 +232,7 @@
<menuitem action="toggle-meter-ruler"/>
<menuitem action="toggle-tempo-ruler"/>
<menuitem action="toggle-range-ruler"/>
+ <menuitem action="toggle-marker-ruler"/>
<menuitem action="toggle-cd-marker-ruler"/>
<menuitem action="toggle-loop-punch-ruler"/>
</menu>
@@ -296,6 +311,19 @@
</menubar>
+ <popup action="RulerMenuPopup">
+ <menuitem action="toggle-bbt-ruler"/>
+ <menuitem action="toggle-minsec-ruler"/>
+ <menuitem action="toggle-samples-ruler"/>
+ <separator/>
+ <menuitem action="toggle-meter-ruler"/>
+ <menuitem action="toggle-tempo-ruler"/>
+ <menuitem action="toggle-range-ruler"/>
+ <menuitem action="toggle-marker-ruler"/>
+ <menuitem action="toggle-cd-marker-ruler"/>
+ <menuitem action="toggle-loop-punch-ruler"/>
+ </popup>
+
<popup name='redirectmenu'>
<menuitem action='newplugin'/>
<menuitem action='newinsert'/>
diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus
index c180d0b57e..399743939c 100644
--- a/gtk2_ardour/ardour.menus
+++ b/gtk2_ardour/ardour.menus
@@ -448,6 +448,21 @@
</menu>
</menubar>
+ <popup action="RulerMenuPopup">
+ <menuitem action="toggle-minsec-ruler"/>
+ <menuitem action="toggle-timecode-ruler"/>
+ <menuitem action="toggle-samples-ruler"/>
+ <menuitem action="toggle-bbt-ruler"/>
+ <separator/>
+ <menuitem action="toggle-meter-ruler"/>
+ <menuitem action="toggle-timecode-ruler"/>
+ <menuitem action="toggle-tempo-ruler"/>
+ <menuitem action="toggle-range-ruler"/>
+ <menuitem action="toggle-marker-ruler"/>
+ <menuitem action="toggle-cd-marker-ruler"/>
+ <menuitem action="toggle-loop-punch-ruler"/>
+ </popup>
+
<popup name='redirectmenu'>
<menuitem action='newplugin'/>
<menuitem action='newinsert'/>
diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc
index 76cce8c318..43cf205981 100644
--- a/gtk2_ardour/audio_time_axis.cc
+++ b/gtk2_ardour/audio_time_axis.cc
@@ -634,25 +634,27 @@ AudioTimeAxisView::update_control_names ()
{
if (is_audio_track()) {
if (_route->active()) {
- controls_ebox.set_name ("AudioTrackControlsBaseUnselected");
controls_base_selected_name = "AudioTrackControlsBaseSelected";
controls_base_unselected_name = "AudioTrackControlsBaseUnselected";
} else {
- controls_ebox.set_name ("AudioTrackControlsBaseInactiveUnselected");
controls_base_selected_name = "AudioTrackControlsBaseInactiveSelected";
controls_base_unselected_name = "AudioTrackControlsBaseInactiveUnselected";
}
} else {
if (_route->active()) {
- controls_ebox.set_name ("BusControlsBaseUnselected");
controls_base_selected_name = "BusControlsBaseSelected";
controls_base_unselected_name = "BusControlsBaseUnselected";
} else {
- controls_ebox.set_name ("BusControlsBaseInactiveUnselected");
controls_base_selected_name = "BusControlsBaseInactiveSelected";
controls_base_unselected_name = "BusControlsBaseInactiveUnselected";
}
}
+
+ if (get_selected()) {
+ controls_ebox.set_name (controls_base_selected_name);
+ } else {
+ controls_ebox.set_name (controls_base_unselected_name);
+ }
}
XMLNode*
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index c264a4fcb1..1a11082b4e 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -59,6 +59,7 @@
#include "editor_items.h"
#include "region_selection.h"
#include "canvas.h"
+#include "time_axis_view.h"
#include "draginfo.h"
namespace Gtkmm2ext {
@@ -572,7 +573,7 @@ class Editor : public PublicEditor
ArdourCanvas::Group* transport_marker_group;
ArdourCanvas::Group* cd_marker_group;
- enum {
+ enum RulerType {
ruler_metric_smpte = 0,
ruler_metric_bbt = 1,
ruler_metric_frames = 2,
@@ -587,7 +588,16 @@ class Editor : public PublicEditor
};
static GtkCustomMetric ruler_metrics[4];
- bool ruler_shown[10];
+ Glib::RefPtr<Gtk::ToggleAction> ruler_timecode_action;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_bbt_action;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_samples_action;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_minsec_action;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_tempo_action;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_meter_action;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_marker_action;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_range_action;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_loop_punch_action;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_cd_marker_action;
bool no_ruler_shown_update;
gint ruler_button_press (GdkEventButton*);
@@ -604,6 +614,8 @@ class Editor : public PublicEditor
void update_tempo_based_rulers ();
void popup_ruler_menu (nframes_t where = 0, ItemType type = RegionItem);
void update_ruler_visibility ();
+ void set_ruler_visible (RulerType, bool);
+ void toggle_ruler_visibility (RulerType rt);
void ruler_toggled (int);
gint ruler_label_button_release (GdkEventButton*);
void store_ruler_visibility ();
@@ -2082,6 +2094,17 @@ public:
void snap_to_internal (nframes64_t& first, int32_t direction = 0, bool for_mark = false);
RhythmFerret* rhythm_ferret;
+
+ void set_track_height (TimeAxisView::TrackHeight h);
+ void set_track_height_largest ();
+ void set_track_height_large ();
+ void set_track_height_larger ();
+ void set_track_height_normal ();
+ void set_track_height_smaller ();
+ void set_track_height_small ();
+
+ void remove_tracks ();
+ void toggle_tracks_active ();
};
#endif /* __ardour_editor_h__ */
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index efc8f85630..b0cbab3092 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -18,6 +18,7 @@
*/
#include <ardour/ardour.h>
+#include <ardour/profile.h>
#include "utils.h"
#include "editor.h"
@@ -81,6 +82,8 @@ Editor::register_actions ()
ActionManager::register_action (editor_actions, X_("Subframes"), _("Subframes"));
ActionManager::register_action (editor_actions, X_("TempoMenu"), _("Tempo"));
ActionManager::register_action (editor_actions, X_("Timecode"), _("Timecode fps"));
+ ActionManager::register_action (editor_actions, X_("TrackHeightMenu"), _("Height"));
+ ActionManager::register_action (editor_actions, X_("TrackMenu"), _("Tracks"));
ActionManager::register_action (editor_actions, X_("Tools"), _("Tools"));
ActionManager::register_action (editor_actions, X_("TrimMenu"), _("Trim"));
ActionManager::register_action (editor_actions, X_("View"), _("View"));
@@ -499,6 +502,24 @@ Editor::register_actions ()
act = ActionManager::register_action (editor_actions, "remove-last-capture", _("Remove Last Capture"), (mem_fun(*this, &Editor::remove_last_capture)));
ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (editor_actions, "toggle-track-active", _("Toggle Active"), (mem_fun(*this, &Editor::toggle_tracks_active)));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (editor_actions, "remove-track", _("Remove"), (mem_fun(*this, &Editor::remove_tracks)));
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ act = ActionManager::register_action (editor_actions, "track-height-largest", _("Largest"), (mem_fun(*this, &Editor::set_track_height_largest)));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (editor_actions, "track-height-larger", _("Larger"), (mem_fun(*this, &Editor::set_track_height_large)));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (editor_actions, "track-height-large", _("Large"), (mem_fun(*this, &Editor::set_track_height_larger)));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (editor_actions, "track-height-normal", _("Normal"), (mem_fun(*this, &Editor::set_track_height_normal)));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (editor_actions, "track-height-small", _("Small"), (mem_fun(*this, &Editor::set_track_height_smaller)));
+ ActionManager::session_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (editor_actions, "track-height-smaller", _("Smaller"), (mem_fun(*this, &Editor::set_track_height_small)));
+ ActionManager::session_sensitive_actions.push_back (act);
+
Glib::RefPtr<ActionGroup> zoom_actions = ActionGroup::create (X_("Zoom"));
RadioAction::Group zoom_group;
@@ -577,17 +598,36 @@ Editor::register_actions ()
/* RULERS */
Glib::RefPtr<ActionGroup> ruler_actions = ActionGroup::create (X_("Rulers"));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-tempo-ruler"), _("Tempo"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_tempo));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-meter-ruler"), _("Meter"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_meter));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-range-ruler"), _("Ranges"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_range_marker));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-marker-ruler"), _("Markers"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_marker));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-cd-marker-ruler"), _("CD Markers"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_cd_marker));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-loop-punch-ruler"), _("Loop/Punch"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_transport_marker));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-bbt-ruler"), _("Bars & Beats"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_frames));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-samples-ruler"), _("Samples"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_bbt));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-timecode-ruler"), _("Timecode"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_smpte));
- ActionManager::register_toggle_action (ruler_actions, X_("toggle-minsec-ruler"), _("Timecode"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_minsec));
-
+ ruler_tempo_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-tempo-ruler"), _("Tempo"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_time_tempo)));
+ ruler_meter_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-meter-ruler"), _("Meter"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_time_meter)));
+ ruler_range_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-range-ruler"), _("Ranges"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_time_range_marker)));
+ ruler_marker_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-marker-ruler"), _("Markers"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_time_marker)));
+ ruler_cd_marker_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-cd-marker-ruler"), _("CD Markers"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_time_cd_marker)));
+ ruler_loop_punch_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-loop-punch-ruler"), _("Loop/Punch"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_time_transport_marker)));
+ ruler_bbt_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-bbt-ruler"), _("Bars & Beats"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_frames)));
+ ruler_samples_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-samples-ruler"), _("Samples"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_bbt)));
+ ruler_timecode_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-timecode-ruler"), _("Timecode"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_smpte)));
+ ruler_minsec_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-minsec-ruler"), _("Min:Sec"), bind (mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_minsec)));
+
+ /* set defaults here */
+
+ no_ruler_shown_update = true;
+ ruler_meter_action->set_active (true);
+ ruler_tempo_action->set_active (true);
+ ruler_marker_action->set_active (true);
+ ruler_range_action->set_active (true);
+ if (Profile->get_sae()) {
+ ruler_cd_marker_action->set_active (false);
+ ruler_timecode_action->set_active (false);
+ ruler_minsec_action->set_active (true);
+ } else {
+ ruler_cd_marker_action->set_active (true);
+ ruler_timecode_action->set_active (true);
+ ruler_minsec_action->set_active (false);
+ }
+ ruler_samples_action->set_active (false);
+ no_ruler_shown_update = false;
+
/* REGION LIST */
Glib::RefPtr<ActionGroup> rl_actions = ActionGroup::create (X_("RegionList"));
@@ -697,6 +737,56 @@ Editor::register_actions ()
}
void
+Editor::toggle_ruler_visibility (RulerType rt)
+{
+ char* action = 0;
+
+ if (no_ruler_shown_update) {
+ return;
+ }
+
+ switch (rt) {
+ case ruler_metric_smpte:
+ action = "toggle-timecode-ruler";
+ break;
+ case ruler_metric_bbt:
+ action = "toggle-bbt-ruler";
+ break;
+ case ruler_metric_frames:
+ action = "toggle-samples-ruler";
+ break;
+ case ruler_metric_minsec:
+ action = "toggle-minsec-ruler";
+ break;
+ case ruler_time_tempo:
+ action = "toggle-tempo-ruler";
+ break;
+ case ruler_time_meter:
+ action = "toggle-meter-ruler";
+ break;
+ case ruler_time_marker:
+ action = "toggle-marker-ruler";
+ break;
+ case ruler_time_range_marker:
+ action = "toggle-range-ruler";
+ break;
+ case ruler_time_transport_marker:
+ action = "toggle-loop-punch-ruler";
+ break;
+ case ruler_time_cd_marker:
+ action = "toggle-cd-marker-ruler";
+ break;
+ }
+
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("Rulers"), action);
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+ update_ruler_visibility ();
+ store_ruler_visibility ();
+ }
+}
+
+void
Editor::toggle_waveform_visibility ()
{
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Editor"), X_("ToggleWaveformVisibility"));
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc
index 583040d71e..f6af1ae67d 100644
--- a/gtk2_ardour/editor_markers.cc
+++ b/gtk2_ardour/editor_markers.cc
@@ -79,7 +79,7 @@ Editor::add_new_location (Location *location)
if (location->is_mark()) {
- if (location->is_cd_marker() && ruler_shown[ruler_time_cd_marker]) {
+ if (location->is_cd_marker() && ruler_cd_marker_action->get_active()) {
lam->start = new Marker (*this, *cd_marker_group, color, location->name(), Marker::Mark, location->start());
}
else {
@@ -103,7 +103,7 @@ Editor::add_new_location (Location *location)
} else {
// range marker
- if (location->is_cd_marker() && ruler_shown[ruler_time_cd_marker]) {
+ if (location->is_cd_marker() && ruler_cd_marker_action->get_active()) {
lam->start = new Marker (*this, *cd_marker_group, color,
location->name(), Marker::Start, location->start());
lam->end = new Marker (*this, *cd_marker_group, color,
@@ -212,7 +212,7 @@ void Editor::update_cd_marker_display ()
void Editor::ensure_cd_marker_updated (LocationMarkers * lam, Location * location)
{
if (location->is_cd_marker()
- && (ruler_shown[ruler_time_cd_marker] && lam->start->get_parent() != cd_marker_group))
+ && (ruler_cd_marker_action->get_active() && lam->start->get_parent() != cd_marker_group))
{
//cerr << "reparenting non-cd marker so it can be relocated: " << location->name() << endl;
if (lam->start) {
@@ -222,7 +222,7 @@ void Editor::ensure_cd_marker_updated (LocationMarkers * lam, Location * locatio
lam->end->reparent (*cd_marker_group);
}
}
- else if ( (!location->is_cd_marker() || !ruler_shown[ruler_time_cd_marker])
+ else if ( (!location->is_cd_marker() || !ruler_cd_marker_action->get_active())
&& (lam->start->get_parent() == cd_marker_group))
{
//cerr << "reparenting non-cd marker so it can be relocated: " << location->name() << endl;
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 84b2136498..bba155d94e 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -5462,3 +5462,151 @@ Editor::playhead_backward_to_grid ()
}
}
+void
+Editor::set_track_height (TimeAxisView::TrackHeight h)
+{
+ TrackSelection& ts (selection->tracks);
+
+ if (ts.empty()) {
+ return;
+ }
+
+ for (TrackSelection::iterator x = ts.begin(); x != ts.end(); ++x) {
+ (*x)->set_height (h);
+ }
+}
+
+void
+Editor::set_track_height_largest ()
+{
+ set_track_height (TimeAxisView::Largest);
+}
+void
+Editor::set_track_height_large ()
+{
+ set_track_height (TimeAxisView::Large);
+}
+void
+Editor::set_track_height_larger ()
+{
+ set_track_height (TimeAxisView::Larger);
+}
+void
+Editor::set_track_height_normal ()
+{
+ set_track_height (TimeAxisView::Normal);
+}
+void
+Editor::set_track_height_smaller ()
+{
+ set_track_height (TimeAxisView::Smaller);
+}
+void
+Editor::set_track_height_small ()
+{
+ set_track_height (TimeAxisView::Small);
+}
+
+void
+Editor::toggle_tracks_active ()
+{
+ TrackSelection& ts (selection->tracks);
+ bool first = true;
+ bool target = false;
+
+ if (ts.empty()) {
+ return;
+ }
+
+ for (TrackSelection::iterator x = ts.begin(); x != ts.end(); ++x) {
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(*x);
+
+ if (rtv) {
+ if (first) {
+ target = !rtv->_route->active();
+ first = false;
+ }
+ rtv->_route->set_active (target);
+ }
+ }
+}
+
+void
+Editor::remove_tracks ()
+{
+ TrackSelection& ts (selection->tracks);
+
+ if (ts.empty()) {
+ return;
+ }
+
+ vector<string> choices;
+ string prompt;
+ int ntracks = 0;
+ int nbusses = 0;
+ const char* trackstr;
+ const char* busstr;
+ vector<boost::shared_ptr<Route> > routes;
+
+ for (TrackSelection::iterator x = ts.begin(); x != ts.end(); ++x) {
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*x);
+ if (rtv) {
+ if (rtv->is_track()) {
+ ntracks++;
+ } else {
+ nbusses++;
+ }
+ }
+ routes.push_back (rtv->_route);
+ }
+
+ if (ntracks + nbusses == 0) {
+ return;
+ }
+
+ if (ntracks > 1) {
+ trackstr = _("tracks");
+ } else {
+ trackstr = _("track");
+ }
+
+ if (nbusses > 1) {
+ busstr = _("busses");
+ } else {
+ busstr = _("bus");
+ }
+
+ if (ntracks) {
+ if (nbusses) {
+ prompt = string_compose (_("Do you really want to remove %1 %2 and %3 %4?\n"
+ "(You may also lose the playlists associated with the %2)\n\n"
+ "This action cannot be undone!"),
+ ntracks, trackstr, nbusses, busstr);
+ } else {
+ prompt = string_compose (_("Do you really want to remove %1 %2?\n"
+ "(You may also lose the playlists associated with the %2)\n\n"
+ "This action cannot be undone!"),
+ ntracks, trackstr);
+ }
+ } else if (nbusses) {
+ prompt = string_compose (_("Do you really want to remove %1 %2?"),
+ nbusses, busstr);
+ }
+
+ choices.push_back (_("No, do nothing."));
+ if (ntracks + nbusses > 1) {
+ choices.push_back (_("Yes, remove them."));
+ } else {
+ choices.push_back (_("Yes, remove it."));
+ }
+
+ Choice prompter (prompt, choices);
+
+ if (prompter.run () != 1) {
+ return;
+ }
+
+ for (vector<boost::shared_ptr<Route> >::iterator x = routes.begin(); x != routes.end(); ++x) {
+ session->remove_route (*x);
+ }
+}
diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc
index 74fd0aff7e..f75a180335 100644
--- a/gtk2_ardour/editor_rulers.cc
+++ b/gtk2_ardour/editor_rulers.cc
@@ -22,12 +22,15 @@
#include <string>
+#include <gtk/gtkaction.h>
+
#include <ardour/tempo.h>
#include <ardour/profile.h>
#include <gtkmm2ext/gtk_ui.h>
#include "editor.h"
#include "editing.h"
+#include "actions.h"
#include "gtk-custom-hruler.h"
#include "gui_thread.h"
@@ -65,14 +68,12 @@ Editor::initialize_rulers ()
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]);
- ruler_shown[ruler_metric_smpte] = true;
_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]);
- ruler_shown[ruler_metric_bbt] = true;
_frames_ruler = gtk_custom_hruler_new ();
frames_ruler = Glib::wrap (_frames_ruler);
@@ -86,19 +87,6 @@ Editor::initialize_rulers ()
minsec_ruler->set_size_request (-1, (int)timebar_height);
gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_minsec_ruler), &ruler_metrics[ruler_metric_minsec]);
- ruler_shown[ruler_time_meter] = true;
- ruler_shown[ruler_time_tempo] = true;
- ruler_shown[ruler_time_marker] = true;
- ruler_shown[ruler_time_range_marker] = true;
- ruler_shown[ruler_time_transport_marker] = true;
- if (Profile->get_sae()) {
- ruler_shown[ruler_time_cd_marker] = false;
- } else {
- ruler_shown[ruler_time_cd_marker] = true;
- }
- ruler_shown[ruler_metric_frames] = false;
- ruler_shown[ruler_metric_minsec] = false;
-
visible_timebars = 7; /* 4 here, 3 in time_canvas */
ruler_pressed_button = 0;
}
@@ -260,9 +248,11 @@ Editor::ruler_button_release (GdkEventButton* ev)
gint
Editor::ruler_label_button_release (GdkEventButton* ev)
{
- if (ev->button == 3)
- {
- popup_ruler_menu();
+ if (ev->button == 3) {
+ Gtk::Menu* m= dynamic_cast<Gtk::Menu*> (ActionManager::get_widget (X_("/RulerMenuPopup")));
+ if (m) {
+ m->popup (1, ev->time);
+ }
}
return TRUE;
@@ -357,10 +347,6 @@ Editor::popup_ruler_menu (nframes_t where, ItemType t)
editor_ruler_menu->set_name ("ArdourContextMenu");
ruler_items.clear();
- CheckMenuItem * mitem;
-
- no_ruler_shown_update = true;
-
switch (t) {
case MarkerBarItem:
ruler_items.push_back (MenuElem (_("New location marker"), bind ( mem_fun(*this, &Editor::mouse_add_new_marker), where, false, false)));
@@ -400,114 +386,74 @@ Editor::popup_ruler_menu (nframes_t where, ItemType t)
default:
break;
}
-
- ruler_items.push_back (CheckMenuElem (_("Min:Secs"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_minsec)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_metric_minsec]) {
- mitem->set_active(true);
- }
- ruler_items.push_back (CheckMenuElem (_("Timecode"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_smpte)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_metric_smpte]) {
- mitem->set_active(true);
- }
+ Glib::RefPtr<Action> action;
- ruler_items.push_back (CheckMenuElem (_("Samples"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_frames)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_metric_frames]) {
- mitem->set_active(true);
+ action = ActionManager::get_action ("Rulers", "toggle-minsec-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
}
-
- ruler_items.push_back (CheckMenuElem (_("Bars:Beats"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_metric_bbt)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_metric_bbt]) {
- mitem->set_active(true);
+ if (!Profile->get_sae()) {
+ action = ActionManager::get_action ("Rulers", "toggle-timecode-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
+ }
}
-
- ruler_items.push_back (SeparatorElem ());
-
- ruler_items.push_back (CheckMenuElem (_("Meter"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_meter)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_time_meter]) {
- mitem->set_active(true);
+ action = ActionManager::get_action ("Rulers", "toggle-samples-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
}
-
- ruler_items.push_back (CheckMenuElem (_("Tempo"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_tempo)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_time_tempo]) {
- mitem->set_active(true);
+ action = ActionManager::get_action ("Rulers", "toggle-bbt-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
}
-
- ruler_items.push_back (CheckMenuElem (_("Location Markers"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_marker)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_time_marker]) {
- mitem->set_active(true);
+ action = ActionManager::get_action ("Rulers", "toggle-meter-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
+ }
+ action = ActionManager::get_action ("Rulers", "toggle-tempo-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
+ }
+ action = ActionManager::get_action ("Rulers", "toggle-marker-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
}
-
if (!Profile->get_sae()) {
- ruler_items.push_back (CheckMenuElem (_("Range Markers"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_range_marker)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_time_range_marker]) {
- mitem->set_active(true);
+ action = ActionManager::get_action ("Rulers", "toggle-range-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
}
}
+ action = ActionManager::get_action ("Rulers", "toggle-cd-marker-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
+ }
+ action = ActionManager::get_action ("Rulers", "toggle-loop-punch-ruler");
+ if (action) {
+ ruler_items.push_back (MenuElem (*action->create_menu_item()));
+ }
- ruler_items.push_back (CheckMenuElem (_("CD Markers"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_cd_marker)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_time_cd_marker]) {
- mitem->set_active(true);
- }
-
- ruler_items.push_back (CheckMenuElem (_("Loop/Punch Ranges"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_transport_marker)));
- mitem = (CheckMenuItem *) &ruler_items.back();
- if (ruler_shown[ruler_time_transport_marker]) {
- mitem->set_active(true);
- }
-
editor_ruler_menu->popup (1, gtk_get_current_event_time());
no_ruler_shown_update = false;
}
void
-Editor::ruler_toggled (int ruler)
-{
- if (!session) return;
- if (ruler < 0 || ruler >= (int) sizeof(ruler_shown)) return;
-
- if (no_ruler_shown_update) return;
-
- if (ruler_shown[ruler]) {
- if (visible_timebars <= 1) {
- // must always have 1 visible
- return;
- }
- }
-
- ruler_shown[ruler] = !ruler_shown[ruler];
-
- update_ruler_visibility ();
-
- // update session extra RulerVisibility
- store_ruler_visibility ();
-}
-
-void
Editor::store_ruler_visibility ()
{
XMLNode* node = new XMLNode(X_("RulerVisibility"));
- node->add_property (X_("smpte"), ruler_shown[ruler_metric_smpte] ? "yes": "no");
- node->add_property (X_("bbt"), ruler_shown[ruler_metric_bbt] ? "yes": "no");
- node->add_property (X_("frames"), ruler_shown[ruler_metric_frames] ? "yes": "no");
- node->add_property (X_("minsec"), ruler_shown[ruler_metric_minsec] ? "yes": "no");
- node->add_property (X_("tempo"), ruler_shown[ruler_time_tempo] ? "yes": "no");
- node->add_property (X_("meter"), ruler_shown[ruler_time_meter] ? "yes": "no");
- node->add_property (X_("marker"), ruler_shown[ruler_time_marker] ? "yes": "no");
- node->add_property (X_("rangemarker"), ruler_shown[ruler_time_range_marker] ? "yes": "no");
- node->add_property (X_("transportmarker"), ruler_shown[ruler_time_transport_marker] ? "yes": "no");
- node->add_property (X_("cdmarker"), ruler_shown[ruler_time_cd_marker] ? "yes": "no");
+ node->add_property (X_("smpte"), ruler_timecode_action->get_active() ? "yes": "no");
+ node->add_property (X_("bbt"), ruler_bbt_action->get_active() ? "yes": "no");
+ node->add_property (X_("frames"), ruler_samples_action->get_active() ? "yes": "no");
+ node->add_property (X_("minsec"), ruler_minsec_action->get_active() ? "yes": "no");
+ node->add_property (X_("tempo"), ruler_tempo_action->get_active() ? "yes": "no");
+ node->add_property (X_("meter"), ruler_meter_action->get_active() ? "yes": "no");
+ node->add_property (X_("marker"), ruler_marker_action->get_active() ? "yes": "no");
+ node->add_property (X_("rangemarker"), ruler_range_action->get_active() ? "yes": "no");
+ node->add_property (X_("transportmarker"), ruler_loop_punch_action->get_active() ? "yes": "no");
+ node->add_property (X_("cdmarker"), ruler_cd_marker_action->get_active() ? "yes": "no");
session->add_extra_xml (*node);
session->set_dirty ();
@@ -519,92 +465,92 @@ Editor::restore_ruler_visibility ()
XMLProperty* prop;
XMLNode * node = session->extra_xml (X_("RulerVisibility"));
+ no_ruler_shown_update = true;
+
if (node) {
if ((prop = node->property ("smpte")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_metric_smpte] = true;
+ ruler_timecode_action->set_active (true);
else
- ruler_shown[ruler_metric_smpte] = false;
+ ruler_timecode_action->set_active (false);
}
if ((prop = node->property ("bbt")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_metric_bbt] = true;
+ ruler_bbt_action->set_active (true);
else
- ruler_shown[ruler_metric_bbt] = false;
+ ruler_bbt_action->set_active (false);
}
if ((prop = node->property ("frames")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_metric_frames] = true;
+ ruler_samples_action->set_active (true);
else
- ruler_shown[ruler_metric_frames] = false;
+ ruler_samples_action->set_active (false);
}
if ((prop = node->property ("minsec")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_metric_minsec] = true;
+ ruler_minsec_action->set_active (true);
else
- ruler_shown[ruler_metric_minsec] = false;
+ ruler_minsec_action->set_active (false);
}
if ((prop = node->property ("tempo")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_time_tempo] = true;
+ ruler_tempo_action->set_active (true);
else
- ruler_shown[ruler_time_tempo] = false;
+ ruler_tempo_action->set_active (false);
}
if ((prop = node->property ("meter")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_time_meter] = true;
+ ruler_meter_action->set_active (true);
else
- ruler_shown[ruler_time_meter] = false;
+ ruler_meter_action->set_active (false);
}
if ((prop = node->property ("marker")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_time_marker] = true;
+ ruler_marker_action->set_active (true);
else
- ruler_shown[ruler_time_marker] = false;
+ ruler_marker_action->set_active (false);
}
if ((prop = node->property ("rangemarker")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_time_range_marker] = true;
+ ruler_range_action->set_active (true);
else
- ruler_shown[ruler_time_range_marker] = false;
+ ruler_range_action->set_active (false);
}
if ((prop = node->property ("transportmarker")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_time_transport_marker] = true;
+ ruler_loop_punch_action->set_active (true);
else
- ruler_shown[ruler_time_transport_marker] = false;
+ ruler_loop_punch_action->set_active (false);
}
if ((prop = node->property ("cdmarker")) != 0) {
if (prop->value() == "yes")
- ruler_shown[ruler_time_cd_marker] = true;
+ ruler_cd_marker_action->set_active (true);
else
- ruler_shown[ruler_time_cd_marker] = false;
-
- cerr << "cd marker ruler set to " << ruler_shown[ruler_time_cd_marker] << endl;
+ ruler_cd_marker_action->set_active (false);
} else {
// this session doesn't yet know about the cdmarker ruler
// as a benefit to the user who doesn't know the feature exists, show the ruler if
// any cd marks exist
- ruler_shown[ruler_time_cd_marker] = false;
+ ruler_cd_marker_action->set_active (false);
const Locations::LocationList & locs = session->locations()->list();
for (Locations::LocationList::const_iterator i = locs.begin(); i != locs.end(); ++i) {
if ((*i)->is_cd_marker()) {
- ruler_shown[ruler_time_cd_marker] = true;
+ ruler_cd_marker_action->set_active (true);
break;
}
}
- cerr << "cd marker ruler default to " << ruler_shown[ruler_time_cd_marker] << endl;
}
}
+ no_ruler_shown_update = false;
+
update_ruler_visibility ();
}
-
void
Editor::update_ruler_visibility ()
{
@@ -612,6 +558,10 @@ Editor::update_ruler_visibility ()
BoxList & lab_children = time_button_vbox.children();
BoxList & ruler_children = time_canvas_vbox.children();
+ if (no_ruler_shown_update) {
+ return;
+ }
+
visible_timebars = 0;
lab_children.clear();
@@ -674,25 +624,25 @@ Editor::update_ruler_visibility ()
ruler_children.insert (canvaspos, Element(*_ruler_separator, PACK_SHRINK, PACK_START));
- if (ruler_shown[ruler_metric_minsec]) {
+ if (ruler_minsec_action->get_active()) {
lab_children.push_back (Element(minsec_label, PACK_SHRINK, PACK_START));
ruler_children.insert (canvaspos, Element(*minsec_ruler, PACK_SHRINK, PACK_START));
visible_timebars++;
}
- if (ruler_shown[ruler_metric_smpte]) {
+ if (ruler_timecode_action->get_active()) {
lab_children.push_back (Element(smpte_label, PACK_SHRINK, PACK_START));
ruler_children.insert (canvaspos, Element(*smpte_ruler, PACK_SHRINK, PACK_START));
visible_timebars++;
}
- if (ruler_shown[ruler_metric_frames]) {
+ if (ruler_samples_action->get_active()) {
lab_children.push_back (Element(frame_label, PACK_SHRINK, PACK_START));
ruler_children.insert (canvaspos, Element(*frames_ruler, PACK_SHRINK, PACK_START));
visible_timebars++;
}
- if (ruler_shown[ruler_metric_bbt]) {
+ if (ruler_bbt_action->get_active()) {
lab_children.push_back (Element(bbt_label, PACK_SHRINK, PACK_START));
ruler_children.insert (canvaspos, Element(*bbt_ruler, PACK_SHRINK, PACK_START));
visible_timebars++;
@@ -701,7 +651,7 @@ Editor::update_ruler_visibility ()
double tbpos = 1.0;
double old_unit_pos ;
- if (ruler_shown[ruler_time_meter]) {
+ if (ruler_meter_action->get_active()) {
lab_children.push_back (Element(meter_label, PACK_SHRINK, PACK_START));
old_unit_pos = meter_group->property_y();
@@ -716,7 +666,7 @@ Editor::update_ruler_visibility ()
meter_group->hide();
}
- if (ruler_shown[ruler_time_tempo]) {
+ 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) {
@@ -730,7 +680,7 @@ Editor::update_ruler_visibility ()
tempo_group->hide();
}
- if (!Profile->get_sae() && ruler_shown[ruler_time_range_marker]) {
+ 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) {
@@ -743,7 +693,7 @@ Editor::update_ruler_visibility ()
range_marker_group->hide();
}
- if (ruler_shown[ruler_time_transport_marker]) {
+ 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) {
@@ -757,7 +707,7 @@ Editor::update_ruler_visibility ()
transport_marker_group->hide();
}
- if (ruler_shown[ruler_time_cd_marker]) {
+ 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) {
@@ -775,7 +725,7 @@ Editor::update_ruler_visibility ()
update_cd_marker_display();
}
- if (ruler_shown[ruler_time_marker]) {
+ 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) {
@@ -811,7 +761,7 @@ Editor::update_just_smpte ()
nframes_t rightmost_frame = leftmost_frame + current_page_frames();
- if (ruler_shown[ruler_metric_smpte]) {
+ if (ruler_timecode_action->get_active()) {
gtk_custom_ruler_set_range (GTK_CUSTOM_RULER(_smpte_ruler), leftmost_frame, rightmost_frame,
leftmost_frame, session->current_end_frame());
}
@@ -836,17 +786,17 @@ Editor::update_fixed_rulers ()
to compute the relevant ticks to display.
*/
- if (ruler_shown[ruler_metric_smpte]) {
+ if (ruler_timecode_action->get_active()) {
gtk_custom_ruler_set_range (GTK_CUSTOM_RULER(_smpte_ruler), leftmost_frame, rightmost_frame,
leftmost_frame, session->current_end_frame());
}
- if (ruler_shown[ruler_metric_frames]) {
+ if (ruler_samples_action->get_active()) {
gtk_custom_ruler_set_range (GTK_CUSTOM_RULER(_frames_ruler), leftmost_frame, rightmost_frame,
leftmost_frame, session->current_end_frame());
}
- if (ruler_shown[ruler_metric_minsec]) {
+ if (ruler_minsec_action->get_active()) {
gtk_custom_ruler_set_range (GTK_CUSTOM_RULER(_minsec_ruler), leftmost_frame, rightmost_frame,
leftmost_frame, session->current_end_frame());
}
@@ -861,7 +811,7 @@ Editor::update_tempo_based_rulers ()
ruler_metrics[ruler_metric_bbt].units_per_pixel = frames_per_unit;
- if (ruler_shown[ruler_metric_bbt]) {
+ if (ruler_bbt_action->get_active()) {
gtk_custom_ruler_set_range (GTK_CUSTOM_RULER(_bbt_ruler), leftmost_frame, leftmost_frame+current_page_frames(),
leftmost_frame, session->current_end_frame());
}
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc
index e5bf67389a..ba12ca0a33 100644
--- a/gtk2_ardour/editor_selection.cc
+++ b/gtk2_ardour/editor_selection.cc
@@ -25,6 +25,7 @@
#include <ardour/diskstream.h>
#include <ardour/playlist.h>
#include <ardour/route_group.h>
+#include <ardour/profile.h>
#include "editor.h"
#include "actions.h"
@@ -768,6 +769,10 @@ Editor::track_selection_changed ()
void
Editor::time_selection_changed ()
{
+ if (Profile->get_sae()) {
+ return;
+ }
+
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
(*i)->hide_selection ();
}
@@ -985,7 +990,9 @@ Editor::set_selection_from_audio_region ()
}
selection->set (0, selection->regions.start(), selection->regions.end_frame());
- set_mouse_mode (Editing::MouseRange, false);
+ if (!Profile->get_sae()) {
+ set_mouse_mode (Editing::MouseRange, false);
+ }
}
void
@@ -1018,7 +1025,9 @@ Editor::set_selection_from_range (Location& loc)
selection->set (0, loc.start(), loc.end());
commit_reversible_command ();
- set_mouse_mode (Editing::MouseRange, false);
+ if (!Profile->get_sae()) {
+ set_mouse_mode (Editing::MouseRange, false);
+ }
}
void
diff --git a/gtk2_ardour/splash.cc b/gtk2_ardour/splash.cc
index 1cf15cdef7..1ed991f74b 100644
--- a/gtk2_ardour/splash.cc
+++ b/gtk2_ardour/splash.cc
@@ -116,10 +116,11 @@ Splash::message (const string& msg)
str += "</b>";
layout->set_markup (str);
- darea.queue_draw ();
-
Glib::RefPtr<Gdk::Window> win = darea.get_window();
+
if (win) {
+ win->invalidate_rect (Gdk::Rectangle (0, darea.get_height() - 30,
+ darea.get_width(), 30), true);
win->process_updates (true);
gdk_flush ();
}