summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-06-27 01:31:22 +0200
committerRobin Gareus <robin@gareus.org>2015-06-27 01:31:22 +0200
commit11c6aaec7a16de8a3fb0dd632da54ce1ba1bec38 (patch)
treeeee68962d08a9041f6880e1d31e32da57144b691 /gtk2_ardour
parent1bd7199f4f623b4e0d69605953ffcfbb9e88eb16 (diff)
check editor/mixer/meterbridge window overlap for show/hide
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc20
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;
}