summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui_dialogs.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-06-26 23:42:11 +0200
committerPaul Davis <paul@linuxaudiosystems.com>2016-02-22 15:31:21 -0500
commit1a3df69a17eec733f8c0bc8940c6b771cd2887f8 (patch)
tree927fc370b251c30193d1a9707e8522178e1cc567 /gtk2_ardour/ardour_ui_dialogs.cc
parent9287a9ba8ebdb044f338e0a8b016cc2b5d21865e (diff)
update Window > Mixer accordingly
Diffstat (limited to 'gtk2_ardour/ardour_ui_dialogs.cc')
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc54
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 {