summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Fletcher <colin.m.fletcher@googlemail.com>2012-06-27 12:21:23 +0000
committerColin Fletcher <colin.m.fletcher@googlemail.com>2012-06-27 12:21:23 +0000
commit5ba1996fd70f05362c70b54e68261b955659f291 (patch)
tree9e30d384f33df9f3eff2d84175752cd9d2390da5
parent266030b79c19c144cc093d69ee57117f742f8347 (diff)
A (hopefully) better fix for toggle-mixer-on-top, using gtk_window_is_active() to work out whether the mixer is already on top.
git-svn-id: svn://localhost/ardour2/branches/3.0@12952 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour_ui.h9
-rw-r--r--gtk2_ardour/ardour_ui_dependents.cc28
-rw-r--r--gtk2_ardour/mixer_ui.cc16
3 files changed, 18 insertions, 35 deletions
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 4d6f3391fc..c48d373ca3 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -259,8 +259,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void get_process_buffers ();
void drop_process_buffers ();
- void goto_editor_window ();
-
protected:
friend class PublicEditor;
@@ -286,9 +284,10 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
ARDOUR::AudioEngine *engine;
Gtk::Tooltips _tooltips;
- void goto_mixer_window ();
- void toggle_mixer_window ();
- void toggle_mixer_on_top ();
+ void goto_editor_window ();
+ void goto_mixer_window ();
+ void toggle_mixer_window ();
+ void toggle_mixer_on_top ();
int setup_windows ();
void setup_transport ();
diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc
index 2b0e0df215..99b27d75d6 100644
--- a/gtk2_ardour/ardour_ui_dependents.cc
+++ b/gtk2_ardour/ardour_ui_dependents.cc
@@ -133,25 +133,21 @@ ARDOUR_UI::toggle_mixer_window ()
void
ARDOUR_UI::toggle_mixer_on_top ()
{
- /* Only called if the editor window received the shortcut key or if selected
- from the editor window menu, so the mixer is definitely not on top, and
- we can unconditionally make it so here.
-
- XXX this might not work so well where there is a global menu bar, e.g.
- on OS X.
- */
-
- /* Toggle the mixer to `visible' if required */
- Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("toggle-mixer"));
- if (act) {
- Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
- if (!tact->get_active()) {
- tact->set_active (true);
+ if (gtk_window_is_active(Mixer_UI::instance()->gobj())) {
+ goto_editor_window ();
+ } else {
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("toggle-mixer"));
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
+
+ /* Toggle the mixer to `visible' if required */
+ if (!tact->get_active ()) {
+ tact->set_active (true);
+ }
}
+ goto_mixer_window ();
}
-
- goto_mixer_window ();
}
/** The main editor window has been closed */
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index a29717211e..5034243680 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -1565,25 +1565,13 @@ Mixer_UI::on_key_press_event (GdkEventKey* ev)
if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) {
return true;
}
-
+
KeyboardKey k (ev->state, ev->keyval);
- GtkAccelKey key;
-
- /* Handle toggle-mixer-on-top here, so it can do a different thing if the
- mixer is already on top and received this key press.
- */
- if (gtk_accel_map_lookup_entry("<Actions>/Common/toggle-mixer-on-top", &key)) {
- if (int (k.state()) == key.accel_mods && k.key() == key.accel_key) {
- ARDOUR_UI::instance()->goto_editor_window();
- return true;
- }
- }
-
if (bindings.activate (k, Bindings::Press)) {
return true;
}
-
+
return forward_key_press (ev);
}