mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-09 16:24:57 +01:00
add previous-tab and next-tab actions and bind to PRIMARY-page-up/down by default
This commit is contained in:
parent
59aa283f38
commit
d25d583dad
4 changed files with 90 additions and 0 deletions
|
|
@ -260,6 +260,8 @@ This mode provides many different operations on both regions and control points,
|
||||||
@trans|Transport/Forward|<@TERTIARY@>Right|fast forward
|
@trans|Transport/Forward|<@TERTIARY@>Right|fast forward
|
||||||
@markers|Editor/selected-marker-to-next-region-boundary|<@PRIMARY@><@TERTIARY@>Right|move to next region edge
|
@markers|Editor/selected-marker-to-next-region-boundary|<@PRIMARY@><@TERTIARY@>Right|move to next region edge
|
||||||
|
|
||||||
|
@wvis|Common/next-tab|<@PRIMARY@>Page_Down|next tab
|
||||||
|
@wvis|Common/previous-tab|<@PRIMARY@>Page_Up|previous tab
|
||||||
@vis|Editor/scroll-tracks-down|Page_Down|scroll down (page)
|
@vis|Editor/scroll-tracks-down|Page_Down|scroll down (page)
|
||||||
@vis|Editor/scroll-tracks-up|Page_Up|scroll up (page)
|
@vis|Editor/scroll-tracks-up|Page_Up|scroll up (page)
|
||||||
@trans|Transport/GotoStart|Home|to start marker
|
@trans|Transport/GotoStart|Home|to start marker
|
||||||
|
|
|
||||||
|
|
@ -853,6 +853,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
|
|
||||||
void load_bindings ();
|
void load_bindings ();
|
||||||
bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
|
bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
|
||||||
|
|
||||||
|
void step_up_through_tabs ();
|
||||||
|
void step_down_through_tabs ();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __ardour_gui_h__ */
|
#endif /* __ardour_gui_h__ */
|
||||||
|
|
|
||||||
|
|
@ -373,6 +373,88 @@ ARDOUR_UI::toggle_editor_and_mixer ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ARDOUR_UI::step_up_through_tabs ()
|
||||||
|
{
|
||||||
|
std::vector<Tabbable*> candidates;
|
||||||
|
|
||||||
|
/* this list must match the order of visibility buttons */
|
||||||
|
|
||||||
|
if (!editor->window_visible()) {
|
||||||
|
candidates.push_back (editor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mixer->window_visible()) {
|
||||||
|
candidates.push_back (mixer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rc_option_editor->window_visible()) {
|
||||||
|
candidates.push_back (rc_option_editor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (candidates.size() < 2) {
|
||||||
|
/* nothing to be done with zero or one visible in tabs */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Tabbable*>::iterator prev = candidates.end();
|
||||||
|
std::vector<Tabbable*>::iterator i;
|
||||||
|
Gtk::Widget* w = _tabs.get_nth_page (_tabs.get_current_page ());
|
||||||
|
|
||||||
|
for (i = candidates.begin(); i != candidates.end(); ++i) {
|
||||||
|
if (w == &(*i)->contents()) {
|
||||||
|
if (prev != candidates.end()) {
|
||||||
|
_tabs.set_current_page (_tabs.page_num ((*prev)->contents()));
|
||||||
|
} else {
|
||||||
|
_tabs.set_current_page (_tabs.page_num (candidates.back()->contents()));
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
prev = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ARDOUR_UI::step_down_through_tabs ()
|
||||||
|
{
|
||||||
|
std::vector<Tabbable*> candidates;
|
||||||
|
|
||||||
|
/* this list must match the order of visibility buttons */
|
||||||
|
|
||||||
|
if (!editor->window_visible()) {
|
||||||
|
candidates.push_back (editor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mixer->window_visible()) {
|
||||||
|
candidates.push_back (mixer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rc_option_editor->window_visible()) {
|
||||||
|
candidates.push_back (rc_option_editor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (candidates.size() < 2) {
|
||||||
|
/* nothing to be done with zero or one visible in tabs */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Tabbable*>::reverse_iterator next = candidates.rend();
|
||||||
|
std::vector<Tabbable*>::reverse_iterator i;
|
||||||
|
Gtk::Widget* w = _tabs.get_nth_page (_tabs.get_current_page ());
|
||||||
|
|
||||||
|
for (i = candidates.rbegin(); i != candidates.rend(); ++i) {
|
||||||
|
if (w == &(*i)->contents()) {
|
||||||
|
if (next != candidates.rend()) {
|
||||||
|
_tabs.set_current_page (_tabs.page_num ((*next)->contents()));
|
||||||
|
} else {
|
||||||
|
_tabs.set_current_page (_tabs.page_num (candidates.front()->contents()));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
next = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::key_change_tabbable_visibility (Tabbable* t)
|
ARDOUR_UI::key_change_tabbable_visibility (Tabbable* t)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -281,6 +281,9 @@ ARDOUR_UI::install_actions ()
|
||||||
global_actions.register_action (common_actions, X_("key-change-mixer-visibility"), _("Change"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::key_change_tabbable_visibility), mixer));
|
global_actions.register_action (common_actions, X_("key-change-mixer-visibility"), _("Change"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::key_change_tabbable_visibility), mixer));
|
||||||
global_actions.register_action (common_actions, X_("key-change-preferences-visibility"), _("Change"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::key_change_tabbable_visibility), rc_option_editor));
|
global_actions.register_action (common_actions, X_("key-change-preferences-visibility"), _("Change"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::key_change_tabbable_visibility), rc_option_editor));
|
||||||
|
|
||||||
|
global_actions.register_action (common_actions, X_("previous-tab"), _("Previous Tab"), sigc::mem_fun (*this, &ARDOUR_UI::step_up_through_tabs));
|
||||||
|
global_actions.register_action (common_actions, X_("next-tab"), _("Next Tab"), sigc::mem_fun (*this, &ARDOUR_UI::step_down_through_tabs));
|
||||||
|
|
||||||
global_actions.register_action (common_actions, X_("toggle-editor-and-mixer"), _("Toggle Editor & Mixer"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_editor_and_mixer));
|
global_actions.register_action (common_actions, X_("toggle-editor-and-mixer"), _("Toggle Editor & Mixer"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_editor_and_mixer));
|
||||||
|
|
||||||
/* windows visibility actions */
|
/* windows visibility actions */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue