summaryrefslogtreecommitdiff
path: root/gtk2_ardour/time_info_box.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-01-27 19:05:03 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-01-27 19:05:03 +0000
commitf56bbe2799d3312707de61858af472dbd37388e3 (patch)
tree05b78cc36570b18b61bbb1c2a6d53df9c3342cbc /gtk2_ardour/time_info_box.cc
parentea655d711c03f9d41425b952b1b0648ebcf2a21f (diff)
fix inconsistent display on selection clocks when in join-object-range mode, and fix restore of that mode from session state via new ActionManager::set_toggle_action()
git-svn-id: svn://localhost/ardour2/branches/3.0@11366 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/time_info_box.cc')
-rw-r--r--gtk2_ardour/time_info_box.cc40
1 files changed, 34 insertions, 6 deletions
diff --git a/gtk2_ardour/time_info_box.cc b/gtk2_ardour/time_info_box.cc
index 515d49f72b..00b760952c 100644
--- a/gtk2_ardour/time_info_box.cc
+++ b/gtk2_ardour/time_info_box.cc
@@ -247,9 +247,22 @@ TimeInfoBox::selection_changed ()
} else {
if (selection.regions.empty()) {
if (selection.points.empty()) {
- selection_start->set_off (true);
- selection_end->set_off (true);
- selection_length->set_off (true);
+ Glib::RefPtr<Action> act = ActionManager::get_action ("MouseMode", "set-mouse-mode-object-range");
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
+
+ if (tact && tact->get_active() && !selection.time.empty()) {
+ /* show selected range */
+ selection_start->set_off (false);
+ selection_end->set_off (false);
+ selection_length->set_off (false);
+ selection_start->set (selection.time.start());
+ selection_end->set (selection.time.end_frame());
+ selection_length->set (selection.time.length());
+ } else {
+ selection_start->set_off (true);
+ selection_end->set_off (true);
+ selection_length->set_off (true);
+ }
} else {
s = max_framepos;
e = 0;
@@ -279,9 +292,24 @@ TimeInfoBox::selection_changed ()
case Editing::MouseRange:
if (selection.time.empty()) {
- selection_start->set_off (true);
- selection_end->set_off (true);
- selection_length->set_off (true);
+ Glib::RefPtr<Action> act = ActionManager::get_action ("MouseMode", "set-mouse-mode-object-range");
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
+
+ if (tact && tact->get_active() && !selection.regions.empty()) {
+ /* show selected regions */
+ s = selection.regions.start();
+ e = selection.regions.end_frame();
+ selection_start->set_off (false);
+ selection_end->set_off (false);
+ selection_length->set_off (false);
+ selection_start->set (s);
+ selection_end->set (e);
+ selection_length->set (e - s + 1);
+ } else {
+ selection_start->set_off (true);
+ selection_end->set_off (true);
+ selection_length->set_off (true);
+ }
} else {
selection_start->set_off (false);
selection_end->set_off (false);