hide tabs in main window when there's only 1 tab left.
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 9 Jul 2015 16:54:09 +0000 (12:54 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 22 Feb 2016 20:31:21 +0000 (15:31 -0500)
This helps with space and also prevents tearing off the last tab

gtk2_ardour/ardour_ui.h
gtk2_ardour/ardour_ui2.cc

index e2db28514838fd723685a8e209cb0e4d20bdee61..cbc75e83a9ff2775000dabbb9c0c1ef7a17bcde5 100644 (file)
@@ -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 page_number);
+       void tabs_page_removed (Gtk::Widget*, guint page_number);
        bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*);
 };
 
index edce58fb7c827f464714bbf55883ba8d0249af55..0a9be6de70fb8f5f0fa63a2e62db8fe6e47ee212 100644 (file)
@@ -149,6 +149,8 @@ ARDOUR_UI::setup_windows ()
        rc_option_editor->contents().show_all ();
        
        _tabs.signal_switch_page().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_switch));
+       _tabs.signal_page_removed().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_removed));
+       _tabs.signal_page_added().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_added));
 
        /* It would be nice if Gtkmm had wrapped this rather than just
         * deprecating the old set_window_creation_hook() method, but oh well...
@@ -158,6 +160,26 @@ ARDOUR_UI::setup_windows ()
        return 0;
 }
 
+void
+ARDOUR_UI::tabs_page_removed (Gtk::Widget*, guint)
+{
+       if (_tabs.get_n_pages() == 1) {
+               _tabs.set_show_tabs (false);
+       } else {
+               _tabs.set_show_tabs (true);
+       }
+}
+
+void
+ARDOUR_UI::tabs_page_added (Gtk::Widget*, guint)
+{
+       if (_tabs.get_n_pages() == 1) {
+               _tabs.set_show_tabs (false);
+       } else {
+               _tabs.set_show_tabs (true);
+       }
+}
+
 void
 ARDOUR_UI::tabs_switch (GtkNotebookPage*, guint page_number)
 {