diff options
author | Robin Gareus <robin@gareus.org> | 2015-06-26 23:42:11 +0200 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-02-22 15:31:21 -0500 |
commit | 1a3df69a17eec733f8c0bc8940c6b771cd2887f8 (patch) | |
tree | 927fc370b251c30193d1a9707e8522178e1cc567 /gtk2_ardour/ardour_ui_dialogs.cc | |
parent | 9287a9ba8ebdb044f338e0a8b016cc2b5d21865e (diff) |
update Window > Mixer accordingly
Diffstat (limited to 'gtk2_ardour/ardour_ui_dialogs.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 54 |
1 files changed, 54 insertions, 0 deletions
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 { |