diff options
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_dependents.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 43 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 20 |
4 files changed, 45 insertions, 22 deletions
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index d681394d84..730594d09b 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -825,6 +825,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void grab_focus_after_dialog (); void tabs_switch (GtkNotebookPage*, guint page_number); + void tabs_page_added (Gtk::Widget*, guint); + void tabs_page_removed (Gtk::Widget*, guint); ArdourButton editor_visibility_button; ArdourButton mixer_visibility_button; ArdourButton prefs_visibility_button; diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index 90e2fd8428..5f75144c15 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -234,6 +234,8 @@ ARDOUR_UI::setup_windows () keyboard->setup_keybindings (); _tabs.signal_switch_page().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_switch)); + _tabs.signal_page_added().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_added)); + _tabs.signal_page_removed().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_removed)); rc_option_editor = new RCOptionEditor; rc_option_editor->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change)); diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index d40195b303..108229a16a 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -32,8 +32,12 @@ #include "ardour/control_protocol_manager.h" #include "ardour/profile.h" #include "ardour/session.h" + #include "control_protocol/control_protocol.h" +#include "gtkmm2ext/keyboard.h" +#include "gtkmm2ext/utils.h" + #include "actions.h" #include "add_route_dialog.h" #include "add_video_dialog.h" @@ -62,8 +66,6 @@ #include "time_info_box.h" #include "timers.h" -#include <gtkmm2ext/keyboard.h> - #include "i18n.h" using namespace ARDOUR; @@ -365,6 +367,43 @@ ARDOUR_UI::detach_tabbable (Tabbable* t) } void +ARDOUR_UI::tabs_page_added (Widget*,guint) +{ + if (_tabs.get_n_pages() > 1) { + + std::vector<TargetEntry> drag_target_entries; + drag_target_entries.push_back (TargetEntry ("tabbable")); + + editor_visibility_button.drag_source_set (drag_target_entries); + mixer_visibility_button.drag_source_set (drag_target_entries); + prefs_visibility_button.drag_source_set (drag_target_entries); + + editor_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (editor->name(), + Pango::FontDescription ("Sans 24"), + 40, 20, + Gdk::Color ("red"))); + mixer_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (mixer->name(), + Pango::FontDescription ("Sans 24"), + 40, 20, + Gdk::Color ("red"))); + prefs_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (rc_option_editor->name(), + Pango::FontDescription ("Sans 24"), + 40, 20, + Gdk::Color ("red"))); + } +} + +void +ARDOUR_UI::tabs_page_removed (Widget*, guint) +{ + if (_tabs.get_n_pages() < 2) { + editor_visibility_button.drag_source_unset (); + mixer_visibility_button.drag_source_unset (); + prefs_visibility_button.drag_source_unset (); + } +} + +void ARDOUR_UI::tabs_switch (GtkNotebookPage*, guint page) { if (page == (guint) _tabs.page_num (editor->contents())) { diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index a8900fd028..14891eee4c 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -555,28 +555,8 @@ ARDOUR_UI::build_menu_bar () Gtk::HBox* window_button_box = manage (new Gtk::HBox); - std::vector<TargetEntry> drag_target_entries; - drag_target_entries.push_back (TargetEntry ("tabbable")); - - editor_visibility_button.drag_source_set (drag_target_entries); - editor_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (editor->name(), - Pango::FontDescription ("Sans 24"), - 40, 20, - Gdk::Color ("red"))); editor_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), editor)); - - mixer_visibility_button.drag_source_set (drag_target_entries); - mixer_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (mixer->name(), - Pango::FontDescription ("Sans 24"), - 40, 20, - Gdk::Color ("red"))); mixer_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), mixer)); - - prefs_visibility_button.drag_source_set (drag_target_entries); - prefs_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (rc_option_editor->name(), - Pango::FontDescription ("Sans 24"), - 40, 20, - Gdk::Color ("red"))); prefs_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), rc_option_editor)); |