From 11c6aaec7a16de8a3fb0dd632da54ce1ba1bec38 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 27 Jun 2015 01:31:22 +0200 Subject: check editor/mixer/meterbridge window overlap for show/hide --- gtk2_ardour/ardour_ui_dialogs.cc | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'gtk2_ardour/ardour_ui_dialogs.cc') diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 85c834b033..d0bb8e6fe1 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -376,13 +376,13 @@ ARDOUR_UI::goto_mixer_window () void ARDOUR_UI::toggle_mixer_window () { - if (!editor || !mixer) { + if (!editor || !mixer || !meterbridge) { /* 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); + printf("ARDOUR_UI::toggle_mixer_window: Editor: %p Mixer: %p MB: %p\n", editor, mixer, meterbridge); PBD::stacktrace (std::cerr, 20); assert (0); #endif @@ -395,11 +395,13 @@ ARDOUR_UI::toggle_mixer_window () if (mixer->not_visible ()) { show = true; } - else if (!editor->not_visible () && ARDOUR_UI_UTILS::windows_overlap (editor, mixer)) { + else if ( (!editor->not_visible () && ARDOUR_UI_UTILS::windows_overlap (editor, mixer)) + || (!meterbridge->not_visible () && ARDOUR_UI_UTILS::windows_overlap (meterbridge, mixer)) + ) { obscuring = true; } - if (obscuring && editor->property_has_toplevel_focus()) { + if (obscuring && (editor->property_has_toplevel_focus() || meterbridge->property_has_toplevel_focus())) { show = true; } @@ -413,13 +415,13 @@ ARDOUR_UI::toggle_mixer_window () void ARDOUR_UI::toggle_meterbridge () { - if (!editor || !meterbridge) { + if (!editor || !mixer || !meterbridge) { /* can this really happen? * keyboard shortcut during session close, maybe? */ #ifndef NDEBUG /* one way to find out: */ - printf("ARDOUR_UI::toggle_meterbridge: Editor: %p MB: %p\n", editor, meterbridge); + printf("ARDOUR_UI::toggle_mixer_window: Editor: %p Mixer: %p MB: %p\n", editor, mixer, meterbridge); PBD::stacktrace (std::cerr, 20); assert (0); #endif @@ -432,11 +434,13 @@ ARDOUR_UI::toggle_meterbridge () if (meterbridge->not_visible ()) { show = true; } - else if (!editor->not_visible() && ARDOUR_UI_UTILS::windows_overlap (editor, meterbridge)) { + else if ( (!editor->not_visible() && ARDOUR_UI_UTILS::windows_overlap (editor, meterbridge)) + || (!mixer->not_visible () && ARDOUR_UI_UTILS::windows_overlap (meterbridge, mixer)) + ) { obscuring = true; } - if (obscuring && editor->property_has_toplevel_focus()) { + if (obscuring && (editor->property_has_toplevel_focus() || mixer->property_has_toplevel_focus())) { show = true; } -- cgit v1.2.3