X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dialogs.cc;h=e372c1e7fdf59f3b106fd1825f8b490b827cee0a;hb=b6c3e5537269e53bb145300e7724e8b89dfb74d6;hp=a134a19b8fa4d9a303c27017d0fa4653c086d80b;hpb=c4c74933e1047c0810bd9a1a8f9110f9ca5d3784;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index a134a19b8f..e372c1e7fd 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -70,7 +70,7 @@ #include "time_info_box.h" #include "timers.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace ARDOUR; using namespace PBD; @@ -336,43 +336,66 @@ void ARDOUR_UI::toggle_editor_and_mixer () { if (editor->tabbed() && mixer->tabbed()) { + /* both in the same window */ if (_tabs.get_current_page() == _tabs.page_num (editor->contents())) { _tabs.set_current_page (_tabs.page_num (mixer->contents())); } else if (_tabs.get_current_page() == _tabs.page_num (mixer->contents())) { _tabs.set_current_page (_tabs.page_num (editor->contents())); } else { - /* do nothing */ + /* go to mixer */ + _tabs.set_current_page (_tabs.page_num (mixer->contents())); } return; } + if (editor->tabbed() && !mixer->tabbed()) { - if (!editor->fully_visible()) { - if (_tabs.get_current_page() == _tabs.page_num (editor->contents())) { + /* editor is tabbed, mixer is not */ + + Gtk::Window* mwin = mixer->current_toplevel (); + + if (!mwin) { + /* mixer's own window doesn't exist */ + mixer->make_visible (); + } else if (!mwin->is_mapped ()) { + /* mixer's own window exists but isn't mapped */ + mixer->make_visible (); + } else { + /* mixer window is mapped, editor is visible as tab */ + Gtk::Widget* f = mwin->get_focus(); + if (f && f->has_focus()) { + /* mixer has focus, switch to editor */ + editor->make_visible (); + } else { mixer->make_visible (); } - } else { - _main_window.present (); } return; } - if (mixer->tabbed () && !editor->tabbed()) { - if (!editor->fully_visible()) { - if (_tabs.get_current_page() == _tabs.page_num (mixer->contents())) { + if (!editor->tabbed() && mixer->tabbed()) { + /* mixer is tabbed, editor is not */ + + Gtk::Window* ewin = editor->current_toplevel (); + + if (!ewin) { + /* mixer's own window doesn't exist */ + editor->make_visible (); + } else if (!ewin->is_mapped ()) { + /* editor's own window exists but isn't mapped */ + editor->make_visible (); + } else { + /* editor window is mapped, mixer is visible as tab */ + Gtk::Widget* f = ewin->get_focus(); + if (f && f->has_focus()) { + /* editor has focus, switch to mixer */ + mixer->make_visible (); + } else { editor->make_visible (); } - } else { - _main_window.present (); } return; } - - if (editor->fully_visible()) { - mixer->make_visible (); - } else { - editor->make_visible (); - } } void @@ -581,28 +604,36 @@ ARDOUR_UI::tabs_switch (GtkNotebookPage*, guint page) { if (editor && (page == (guint) _tabs.page_num (editor->contents()))) { editor_visibility_button.set_active_state (Gtkmm2ext::ImplicitActive); + if (mixer && (mixer->tabbed() || mixer->tabbed_by_default())) { mixer_visibility_button.set_active_state (Gtkmm2ext::Off); } + if (rc_option_editor && (rc_option_editor->tabbed() || rc_option_editor->tabbed_by_default())) { prefs_visibility_button.set_active_state (Gtkmm2ext::Off); } } else if (mixer && (page == (guint) _tabs.page_num (mixer->contents()))) { + if (editor && (editor->tabbed() || editor->tabbed_by_default())) { editor_visibility_button.set_active_state (Gtkmm2ext::Off); } + mixer_visibility_button.set_active_state (Gtkmm2ext::ImplicitActive); if (rc_option_editor && (rc_option_editor->tabbed() || rc_option_editor->tabbed_by_default())) { prefs_visibility_button.set_active_state (Gtkmm2ext::Off); } - } else { + + } else if (page == (guint) _tabs.page_num (rc_option_editor->contents())) { + if (editor && (editor->tabbed() || editor->tabbed_by_default())) { editor_visibility_button.set_active_state (Gtkmm2ext::Off); } + if (mixer && (mixer->tabbed() || mixer->tabbed_by_default())) { mixer_visibility_button.set_active_state (Gtkmm2ext::Off); } + prefs_visibility_button.set_active_state (Gtkmm2ext::ImplicitActive); } @@ -696,7 +727,7 @@ ARDOUR_UI::tabbable_state_change (Tabbable& t) vis_button = &mixer_visibility_button; other_vis_buttons.push_back (&editor_visibility_button); other_vis_buttons.push_back (&prefs_visibility_button); - } else { + } else if (&t == rc_option_editor) { vis_button = &prefs_visibility_button; other_vis_buttons.push_back (&editor_visibility_button); other_vis_buttons.push_back (&mixer_visibility_button); @@ -922,9 +953,3 @@ ARDOUR_UI::toggle_monitor_section_visibility () mixer->show_monitor_section (tact->get_active()); } } - -void -ARDOUR_UI::lua_script_manager () -{ - lua_script_window.show (); -}