mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-09 08:14:58 +01:00
Patch from colinf to fix problems with toggle mixer on top (#2477).
git-svn-id: svn://localhost/ardour2/branches/3.0@12714 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
da6f9ab807
commit
a0cb61d411
5 changed files with 30 additions and 22 deletions
|
|
@ -256,6 +256,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
void get_process_buffers ();
|
void get_process_buffers ();
|
||||||
void drop_process_buffers ();
|
void drop_process_buffers ();
|
||||||
|
|
||||||
|
void goto_editor_window ();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class PublicEditor;
|
friend class PublicEditor;
|
||||||
|
|
||||||
|
|
@ -281,7 +283,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
ARDOUR::AudioEngine *engine;
|
ARDOUR::AudioEngine *engine;
|
||||||
Gtk::Tooltips _tooltips;
|
Gtk::Tooltips _tooltips;
|
||||||
|
|
||||||
void goto_editor_window ();
|
|
||||||
void goto_mixer_window ();
|
void goto_mixer_window ();
|
||||||
void toggle_mixer_window ();
|
void toggle_mixer_window ();
|
||||||
void toggle_mixer_on_top ();
|
void toggle_mixer_on_top ();
|
||||||
|
|
|
||||||
|
|
@ -133,29 +133,25 @@ ARDOUR_UI::toggle_mixer_window ()
|
||||||
void
|
void
|
||||||
ARDOUR_UI::toggle_mixer_on_top ()
|
ARDOUR_UI::toggle_mixer_on_top ()
|
||||||
{
|
{
|
||||||
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("toggle-mixer-on-top"));
|
/* Only called if the editor window received the shortcut key or if selected
|
||||||
if (!act) {
|
from the editor window menu, so the mixer is definitely not on top, and
|
||||||
return;
|
we can unconditionally make it so here.
|
||||||
}
|
|
||||||
|
|
||||||
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
XXX this might not work so well where there is a global menu bar, e.g.
|
||||||
|
on OS X.
|
||||||
|
*/
|
||||||
|
|
||||||
if (tact->get_active()) {
|
/* Toggle the mixer to `visible' if required */
|
||||||
|
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("toggle-mixer"));
|
||||||
|
if (act) {
|
||||||
|
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
||||||
|
|
||||||
/* Toggle the mixer to `visible' if required */
|
if (!tact->get_active()) {
|
||||||
act = ActionManager::get_action (X_("Common"), X_("toggle-mixer"));
|
tact->set_active (true);
|
||||||
if (act) {
|
|
||||||
tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
|
|
||||||
|
|
||||||
if (!tact->get_active()) {
|
|
||||||
tact->set_active ();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
goto_mixer_window ();
|
|
||||||
} else {
|
|
||||||
goto_editor_window ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
goto_mixer_window ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The main editor window has been closed */
|
/** The main editor window has been closed */
|
||||||
|
|
|
||||||
|
|
@ -229,7 +229,7 @@ ARDOUR_UI::install_actions ()
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
|
||||||
ActionManager::register_toggle_action (common_actions, X_("toggle-mixer"), S_("Window|Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_window));
|
ActionManager::register_toggle_action (common_actions, X_("toggle-mixer"), S_("Window|Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_window));
|
||||||
ActionManager::register_toggle_action (common_actions, X_("toggle-mixer-on-top"), _("Mixer on Top"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_on_top));
|
ActionManager::register_action (common_actions, X_("toggle-mixer-on-top"), _("Mixer on Top"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_on_top));
|
||||||
ActionManager::register_toggle_action (common_actions, X_("ToggleRCOptionsEditor"), _("Preferences"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_rc_options_window));
|
ActionManager::register_toggle_action (common_actions, X_("ToggleRCOptionsEditor"), _("Preferences"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_rc_options_window));
|
||||||
ActionManager::register_toggle_action (common_actions, X_("ToggleSessionOptionsEditor"), _("Properties"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_session_options_window));
|
ActionManager::register_toggle_action (common_actions, X_("ToggleSessionOptionsEditor"), _("Properties"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_session_options_window));
|
||||||
act = ActionManager::register_toggle_action (common_actions, X_("ToggleInspector"), _("Tracks and Busses"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_route_params_window));
|
act = ActionManager::register_toggle_action (common_actions, X_("ToggleInspector"), _("Tracks and Busses"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_route_params_window));
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,6 @@ ARDOUR_UI::create_mixer ()
|
||||||
|
|
||||||
mixer->signal_window_state_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::main_window_state_event_handler), false));
|
mixer->signal_window_state_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::main_window_state_event_handler), false));
|
||||||
mixer->signal_unmap().connect (sigc::bind (sigc::ptr_fun (&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/toggle-mixer")));
|
mixer->signal_unmap().connect (sigc::bind (sigc::ptr_fun (&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/toggle-mixer")));
|
||||||
mixer->signal_unmap().connect (sigc::bind (sigc::ptr_fun (&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/toggle-mixer-on-top")));
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1551,6 +1551,18 @@ Mixer_UI::on_key_press_event (GdkEventKey* ev)
|
||||||
|
|
||||||
KeyboardKey k (ev->state, ev->keyval);
|
KeyboardKey k (ev->state, ev->keyval);
|
||||||
|
|
||||||
|
GtkAccelKey key;
|
||||||
|
|
||||||
|
/* Handle toggle-mixer-on-top here, so it can do a different thing if the
|
||||||
|
mixer is already on top and received this key press.
|
||||||
|
*/
|
||||||
|
if (gtk_accel_map_lookup_entry("<Actions>/Common/toggle-mixer-on-top", &key)) {
|
||||||
|
if (int (k.state()) == key.accel_mods && k.key() == key.accel_key) {
|
||||||
|
ARDOUR_UI::instance()->goto_editor_window();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (bindings.activate (k, Bindings::Press)) {
|
if (bindings.activate (k, Bindings::Press)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue