From 5e58d036afd3428f61bb94d8671b896d586ed7f7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 17 Jun 2008 15:32:50 +0000 Subject: possible fix for #2292 git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3467 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/ardour_ui.h | 3 +++ gtk2_ardour/ardour_ui_dialogs.cc | 21 +++++++++++++++++++++ gtk2_ardour/ardour_ui_ed.cc | 15 +++++++++++++++ gtk2_ardour/ardour_ui_mixer.cc | 2 ++ gtk2_ardour/editor.cc | 2 +- 5 files changed, 42 insertions(+), 1 deletion(-) (limited to 'gtk2_ardour') 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 #include +#include #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)); -- cgit v1.2.3