summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-06-17 15:32:50 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-06-17 15:32:50 +0000
commit5e58d036afd3428f61bb94d8671b896d586ed7f7 (patch)
tree9d6cf8a74985b3ed28e528a2806812c3f3dc3ec5 /gtk2_ardour
parent8c3fb5a1f89a0da2a13ff377cec1c5a5654281a5 (diff)
possible fix for #2292
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3467 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui.h3
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc21
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc15
-rw-r--r--gtk2_ardour/ardour_ui_mixer.cc2
-rw-r--r--gtk2_ardour/editor.cc2
5 files changed, 42 insertions, 1 deletions
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 6c937c2309..ed62d5c138 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -339,6 +339,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI
AudioClock big_clock;
Gtk::Window* big_clock_window;
+ void float_big_clock (Gtk::Window* parent);
+ bool main_window_state_event_handler (GdkEventWindowState*, bool window_was_editor);
+
void update_transport_clocks (nframes_t pos);
void record_state_changed ();
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index 9b90ca45f8..239327229b 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -408,3 +408,24 @@ ARDOUR_UI::handle_locations_change (Location* ignored)
}
}
}
+
+bool
+ARDOUR_UI::main_window_state_event_handler (GdkEventWindowState* ev, bool window_was_editor)
+{
+ if (window_was_editor) {
+
+ if ((ev->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) &&
+ (ev->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)) {
+ float_big_clock (editor);
+ }
+
+ } else {
+
+ if ((ev->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) &&
+ (ev->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)) {
+ float_big_clock (mixer);
+ }
+ }
+
+ return false;
+}
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index ee2e10f175..974d8aadf1 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -30,6 +30,7 @@
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/window_title.h>
+#include <gtk/gtk.h>
#include "ardour_ui.h"
#include "public_editor.h"
@@ -73,6 +74,7 @@ ARDOUR_UI::create_editor ()
}
editor->Realized.connect (mem_fun (*this, &ARDOUR_UI::editor_realized));
+ editor->signal_window_state_event().connect (sigc::bind (mem_fun (*this, &ARDOUR_UI::main_window_state_event_handler), true));
return 0;
}
@@ -856,3 +858,16 @@ ARDOUR_UI::setup_clock ()
manage_window (*big_clock_window);
}
+
+void
+ARDOUR_UI::float_big_clock (Gtk::Window* parent)
+{
+ if (big_clock_window) {
+ if (parent) {
+ big_clock_window->set_transient_for (*parent);
+ } else {
+ gtk_window_set_transient_for (big_clock_window->gobj(), (GtkWindow*) 0);
+ }
+ }
+}
+
diff --git a/gtk2_ardour/ardour_ui_mixer.cc b/gtk2_ardour/ardour_ui_mixer.cc
index dfc5d644b0..6373bc8b8c 100644
--- a/gtk2_ardour/ardour_ui_mixer.cc
+++ b/gtk2_ardour/ardour_ui_mixer.cc
@@ -41,6 +41,8 @@ ARDOUR_UI::create_mixer ()
return -1;
}
+ mixer->signal_window_state_event().connect (bind (mem_fun (*this, &ARDOUR_UI::main_window_state_event_handler), false));
+
return 0;
}
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 8ca91bffbb..14c7ec0301 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -4006,8 +4006,8 @@ Editor::maximise_editing_space ()
post_maximal_pane_position = edit_pane.get_width();
}
-
fullscreen();
+
if(post_maximal_editor_width) {
edit_pane.set_position (post_maximal_pane_position -
abs(post_maximal_editor_width - pre_maximal_editor_width));