update Window > Mixer accordingly
authorRobin Gareus <robin@gareus.org>
Fri, 26 Jun 2015 21:42:11 +0000 (23:42 +0200)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 22 Feb 2016 20:31:21 +0000 (15:31 -0500)
gtk2_ardour/ardour_ui_dialogs.cc

index 84959d1e51dcdb361f80b10e228715e08b65d374..345a1f63676d4a624a281ac888c7ce44e62f2a4f 100644 (file)
@@ -379,6 +379,7 @@ ARDOUR_UI::goto_mixer_window ()
 void
 ARDOUR_UI::toggle_mixer_window ()
 {
+<<<<<<< HEAD
        /* thse windows are created in ARDOUR_UI::setup_windows()
         * it should be impossible to get here with any of them being NULL
         */
@@ -400,6 +401,59 @@ ARDOUR_UI::toggle_mixer_window ()
                show = true;
        }
 
+=======
+       if (!editor || !mixer) {
+               /* can this really happen?
+                * keyboard shortcut during session close, maybe?
+                */
+#ifndef NDEBUG
+                /* one way to find out: */
+               printf("ARDOUR_UI::toggle_mixer_window: Editor: %p Mixer: %p\n", editor, mixer);
+               PBD::stacktrace (std::cerr, 20);
+               assert (0);
+#endif
+               return;
+       }
+
+       bool show = false;
+       bool obscuring = false;
+
+       if (mixer->not_visible ()) {
+               show = true;
+       }
+       else if (editor->get_screen() == mixer->get_screen()) {
+               gint ex, ey, ew, eh;
+               gint mx, my, mw, mh;
+
+               editor->get_position (ex, ey);
+               editor->get_size (ew, eh);
+               mixer->get_position (mx, my);
+               mixer->get_size (mw, mh);
+
+               GdkRectangle e;
+               GdkRectangle m;
+               GdkRectangle r;
+
+               e.x = ex;
+               e.y = ey;
+               e.width = ew;
+               e.height = eh;
+
+               m.x = mx;
+               m.y = my;
+               m.width = mw;
+               m.height = mh;
+
+               if (gdk_rectangle_intersect (&e, &m, &r)) {
+                       obscuring = true;
+               }
+       }
+
+       if (obscuring && editor->property_has_toplevel_focus()) {
+               show = true;
+       }
+
+>>>>>>> update Window > Mixer accordingly
        if (show) {
                goto_mixer_window ();
        } else {