first compilable version of tabbable design.
[ardour.git] / gtk2_ardour / editor_mixer.cc
index 0817a31128d498904bac25122055516305042492..0651d30c1ebe7a7233fae968d56bf47ec647a847 100644 (file)
@@ -22,6 +22,7 @@
 #endif
 
 #include <glibmm/miscutils.h>
+#include <gtkmm/messagedialog.h>
 #include <gtkmm2ext/utils.h>
 #include <gtkmm2ext/window_title.h>
 
@@ -34,7 +35,6 @@
 #include "audio_time_axis.h"
 #include "automation_time_axis.h"
 #include "editor.h"
-#include "editor_routes.h"
 #include "editor_route_groups.h"
 #include "editor_regions.h"
 #include "gui_thread.h"
@@ -42,6 +42,7 @@
 #include "mixer_strip.h"
 #include "mixer_ui.h"
 #include "selection.h"
+#include "ui_config.h"
 
 #include "i18n.h"
 
@@ -76,6 +77,23 @@ Editor::show_editor_mixer (bool yn)
 
        show_editor_mixer_when_tracks_arrive = false;
 
+       if (yn) {
+               Glib::RefPtr<Gdk::Window> win = current_toplevel()->get_window ();
+               Glib::RefPtr<Gdk::Screen> screen;
+
+               if (win) {
+                        screen = win->get_screen();
+               } else {
+                       screen = Gdk::Screen::get_default();
+               }
+
+               if (g_getenv ("ARDOUR_LOVES_STUPID_TINY_SCREENS") == 0 && screen && screen->get_height() < 700) {
+                       Gtk::MessageDialog msg (_("This screen is not tall enough to display the editor mixer"));
+                       msg.run ();
+                       return;
+               }
+       }
+
        if (!_session) {
                show_editor_mixer_when_tracks_arrive = yn;
                return;
@@ -100,7 +118,7 @@ Editor::show_editor_mixer (bool yn)
                        }
 
                } else {
-                       sort_track_selection ();
+                       sort_track_selection (selection->tracks);
 
                        for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
                                RouteTimeAxisView* atv;
@@ -116,17 +134,19 @@ Editor::show_editor_mixer (bool yn)
                        if (current_mixer_strip == 0) {
                                create_editor_mixer ();
                        }
-
-                       current_mixer_strip->set_route (r);
-                       current_mixer_strip->set_width_enum (editor_mixer_strip_width, (void*) this);
                }
 
-               if (current_mixer_strip->get_parent() == 0) {
+               if (current_mixer_strip && current_mixer_strip->get_parent() == 0) {
                        global_hpacker.pack_start (*current_mixer_strip, Gtk::PACK_SHRINK );
                        global_hpacker.reorder_child (*current_mixer_strip, 0);
                        current_mixer_strip->show ();
                }
 
+               if (r) {
+                       current_mixer_strip->set_route (r);
+                       current_mixer_strip->set_width_enum (editor_mixer_strip_width, (void*) this);
+               }
+
        } else {
 
                if (current_mixer_strip) {
@@ -147,8 +167,7 @@ void
 Editor::ensure_all_elements_drawn ()
 {
        controls_layout.queue_draw ();
-       ruler_label_event_box.queue_draw ();
-       time_button_event_box.queue_draw ();
+       time_bars_event_box.queue_draw ();
 }
 #endif
 
@@ -165,6 +184,7 @@ Editor::create_editor_mixer ()
        current_mixer_strip->WidthChanged.connect (sigc::mem_fun(*this, &Editor::ensure_all_elements_drawn));
 #endif
        current_mixer_strip->set_embedded (true);
+
 }
 
 void
@@ -264,7 +284,7 @@ Editor::track_mixer_selection ()
 void
 Editor::follow_mixer_selection ()
 {
-       if (!ARDOUR::Config->get_link_editor_and_mixer_selection() || _following_mixer_selection) {
+       if (_following_mixer_selection) {
                return;
        }