From 1a3df69a17eec733f8c0bc8940c6b771cd2887f8 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 26 Jun 2015 23:42:11 +0200 Subject: [PATCH] update Window > Mixer accordingly --- gtk2_ardour/ardour_ui_dialogs.cc | 54 ++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 84959d1e51..345a1f6367 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -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 {