diff options
author | Robin Gareus <robin@gareus.org> | 2015-06-27 01:31:22 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-06-27 01:31:22 +0200 |
commit | 11c6aaec7a16de8a3fb0dd632da54ce1ba1bec38 (patch) | |
tree | eee68962d08a9041f6880e1d31e32da57144b691 /gtk2_ardour/ardour_ui_dialogs.cc | |
parent | 1bd7199f4f623b4e0d69605953ffcfbb9e88eb16 (diff) |
check editor/mixer/meterbridge window overlap for show/hide
Diffstat (limited to 'gtk2_ardour/ardour_ui_dialogs.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 20 |
1 files changed, 12 insertions, 8 deletions
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; } |