A (hopefully) better fix for toggle-mixer-on-top, using gtk_window_is_active() to...
authorColin Fletcher <colin.m.fletcher@googlemail.com>
Wed, 27 Jun 2012 12:21:23 +0000 (12:21 +0000)
committerColin Fletcher <colin.m.fletcher@googlemail.com>
Wed, 27 Jun 2012 12:21:23 +0000 (12:21 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@12952 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/ardour_ui.h
gtk2_ardour/ardour_ui_dependents.cc
gtk2_ardour/mixer_ui.cc

index 4d6f3391fc425b60c09fc8e1e556d93f1d9e634b..c48d373ca34a910f963994555dbc8acb927bc84d 100644 (file)
@@ -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 ();
index 2b0e0df215eb32b8baf48b7c028b4842eeaa7c5f..99b27d75d65edd496094378948c433a9fefa7b47 100644 (file)
@@ -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 */
index a29717211e659c65c7ac970bc5ecdc46596b5e54..503424368088e2d7b9db54b95f6b9ef5e77c7e51 100644 (file)
@@ -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);
 }