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
This commit is contained in:
parent
ea655d711c
commit
f56bbe2799
|
@ -2263,7 +2263,7 @@ Editor::set_state (const XMLNode& node, int /*version*/)
|
|||
}
|
||||
|
||||
if ((prop = node.property ("join-object-range"))) {
|
||||
join_object_range_button.set_active (string_is_affirmative (prop->value ()));
|
||||
ActionManager::set_toggle_action ("MouseMode", "set-mouse-mode-object-range", string_is_affirmative (prop->value ()));
|
||||
}
|
||||
|
||||
if ((prop = node.property ("edit-point"))) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -353,3 +353,15 @@ ActionManager::do_action (const char* group, const char*action)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
ActionManager::set_toggle_action (const char* group, const char*action, bool yn)
|
||||
{
|
||||
Glib::RefPtr<Gtk::Action> act = ActionManager::get_action (group, action);
|
||||
if (act) {
|
||||
Glib::RefPtr<Gtk::ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||
if (tact) {
|
||||
tact->set_active (yn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -44,6 +44,7 @@ namespace ActionManager {
|
|||
extern Glib::RefPtr<Gtk::Action> get_action (const char* group, const char* name);
|
||||
extern Glib::RefPtr<Gtk::Action> get_action (const char* path);
|
||||
extern void do_action (const char* group, const char* name);
|
||||
extern void set_toggle_action (const char* group, const char* name, bool);
|
||||
|
||||
extern void add_action_group (Glib::RefPtr<Gtk::ActionGroup>);
|
||||
|
||||
|
|
Loading…
Reference in New Issue