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;
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));
#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"
#include "time_info_box.h"
#include "timers.h"
-#include <gtkmm2ext/keyboard.h>
-
#include "i18n.h"
using namespace ARDOUR;
t->detach ();
}
+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)
{
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));