use running_from_source_tree()
[ardour.git] / gtk2_ardour / editor_mixer.cc
index b693cf7e75609720ac907aa9d6c09c41d68b2e8d..0109aa38c1107bd04f1b550e0785b17da6b35ee5 100644 (file)
@@ -42,6 +42,7 @@
 #include "mixer_strip.h"
 #include "mixer_ui.h"
 #include "selection.h"
+#include "ui_config.h"
 
 #include "i18n.h"
 
@@ -77,16 +78,21 @@ Editor::show_editor_mixer (bool yn)
        show_editor_mixer_when_tracks_arrive = false;
 
        if (yn) {
-               Glib::RefPtr<Gdk::Window> win = get_window ();
+               Gtk::Window* toplevel = current_toplevel();
+               Glib::RefPtr<Gdk::Window> win;
                Glib::RefPtr<Gdk::Screen> screen;
-               
+
+               if (toplevel) {
+                       win = toplevel->get_window();
+               }
+
                if (win) {
-                        screen = win->get_screen();
+                       screen = win->get_screen();
                } else {
                        screen = Gdk::Screen::get_default();
                }
 
-               if (screen && screen->get_height() < 700) {
+               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;
@@ -133,17 +139,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) {
@@ -153,18 +161,17 @@ Editor::show_editor_mixer (bool yn)
                }
        }
 
-#ifdef GTKOSX
+#ifdef __APPLE__
        /* XXX gtk problem here */
        ensure_all_elements_drawn();
 #endif
 }
 
-#ifdef GTKOSX
+#ifdef __APPLE__
 void
 Editor::ensure_all_elements_drawn ()
 {
        controls_layout.queue_draw ();
-       ruler_label_event_box.queue_draw ();
        time_bars_event_box.queue_draw ();
 }
 #endif
@@ -172,16 +179,15 @@ Editor::ensure_all_elements_drawn ()
 void
 Editor::create_editor_mixer ()
 {
-       current_mixer_strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(),
-                                             _session,
-                                             false);
+       current_mixer_strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(), _session, false);
        current_mixer_strip->Hiding.connect (sigc::mem_fun(*this, &Editor::current_mixer_strip_hidden));
        current_mixer_strip->WidthChanged.connect (sigc::mem_fun (*this, &Editor::mixer_strip_width_changed));
 
-#ifdef GTKOSX
+#ifdef __APPLE__
        current_mixer_strip->WidthChanged.connect (sigc::mem_fun(*this, &Editor::ensure_all_elements_drawn));
 #endif
        current_mixer_strip->set_embedded (true);
+
 }
 
 void
@@ -265,7 +271,7 @@ Editor::maybe_add_mixer_strip_width (XMLNode& node)
 void
 Editor::mixer_strip_width_changed ()
 {
-#ifdef GTKOSX
+#ifdef __APPLE__
        ensure_all_elements_drawn ();
 #endif
 
@@ -281,7 +287,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;
        }