make tearoff windows still forward key events (and thus bindings still work); make...
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 21 Aug 2009 13:48:31 +0000 (13:48 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 21 Aug 2009 13:48:31 +0000 (13:48 +0000)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5562 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/ardour_ui2.cc
gtk2_ardour/ardour_ui_ed.cc
gtk2_ardour/editor.cc
gtk2_ardour/plugin_ui.cc
gtk2_ardour/public_editor.h
gtk2_ardour/utils.cc
gtk2_ardour/utils.h

index 6ff37bce2ef4640960a01d9257b462b5dd2ad9f2..374de94048c7fb19b3ca7e273fea87d7c6840f90 100644 (file)
@@ -190,6 +190,7 @@ ARDOUR_UI::setup_transport ()
 {
        transport_tearoff = manage (new TearOff (transport_tearoff_hbox));
        transport_tearoff->set_name ("TransportBase");
+       transport_tearoff->tearoff_window().signal_key_press_event().connect (bind (sigc::ptr_fun (relay_key_press), &transport_tearoff->tearoff_window()));
 
        if (Profile->get_sae()) {
                transport_tearoff->set_can_be_torn_off (false);
index ad9898f8220039d696fa547fb984d0a9cd450c16..90faeb33d3d4b17f735ea1f8cfcd008f45c457f3 100644 (file)
@@ -39,6 +39,7 @@
 #include "editor.h"
 #include "actions.h"
 #include "mixer_ui.h"
+#include "utils.h"
 
 #ifdef GTKOSX
 #include <gtkmm2ext/sync-menu.h>
@@ -853,11 +854,12 @@ ARDOUR_UI::setup_clock ()
        big_clock_window->set_keep_above (true);
        big_clock_window->set_border_width (0);
        big_clock_window->add  (big_clock);
+       big_clock_window->signal_key_press_event().connect (bind (sigc::ptr_fun (relay_key_press), big_clock_window));
 
        WindowTitle title(Glib::get_application_name());
        title += _("Clock");
        big_clock_window->set_title (title.get_string());
-       big_clock_window->set_type_hint (Gdk::WINDOW_TYPE_HINT_MENU);
+       big_clock_window->set_type_hint (Gdk::WINDOW_TYPE_HINT_UTILITY);
        big_clock_window->signal_realize().connect (bind (sigc::ptr_fun (set_decoration), big_clock_window,  (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)));
        big_clock_window->signal_unmap().connect (bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleBigClock")));
 
index 51333d5a65f1c2a8f2c1ae09a81fd59c0329ce33..256f053f08d677ed5b1124a0064309ec3e710c6f 100644 (file)
@@ -2945,6 +2945,7 @@ Editor::setup_toolbar ()
        
        mouse_mode_tearoff = manage (new TearOff (*mode_box));
        mouse_mode_tearoff->set_name ("MouseModeBase");
+       mouse_mode_tearoff->tearoff_window().signal_key_press_event().connect (bind (sigc::ptr_fun (relay_key_press), &mouse_mode_tearoff->tearoff_window()));
 
        if (Profile->get_sae()) {
                mouse_mode_tearoff->set_can_be_torn_off (false);
@@ -3069,6 +3070,7 @@ Editor::setup_toolbar ()
 
        tools_tearoff = new TearOff (*hbox);
        tools_tearoff->set_name ("MouseModeBase");
+       tools_tearoff->tearoff_window().signal_key_press_event().connect (bind (sigc::ptr_fun (relay_key_press), &tools_tearoff->tearoff_window()));
 
        if (Profile->get_sae()) {
                tools_tearoff->set_can_be_torn_off (false);
index 0705d22a8b51184a7f88b7ad1035323b2c36c87b..a159c2c0fa8a06072600dc71868ba69f39612787 100644 (file)
@@ -299,11 +299,7 @@ PluginUIWindow::create_lv2_editor(boost::shared_ptr<PluginInsert> insert)
 bool
 PluginUIWindow::on_key_press_event (GdkEventKey* event)
 {
-       if (!key_press_focus_accelerator_handler (*this, event)) {
-               return PublicEditor::instance().on_key_press_event(event);
-       } else {
-               return true;
-       }
+       relay_key_press (event, this);
 }
 
 bool
index bf21950c68e1fab15e5dd18edbdff2798b973ac8..08831f266821606cee270e2339c8b71adc9d1823 100644 (file)
@@ -235,7 +235,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
 
        static PublicEditor* _instance;
 
-       friend class PluginUIWindow;
+       friend bool relay_key_press (GdkEventKey* ev, Gtk::Window* win);
 };
 
 #endif // __gtk_ardour_public_editor_h__
index a762887d3f98f12eb0cd1381fc93018932e1935c..99a56f355efaa4d8903d7272b6fa623ce33d9fff 100644 (file)
@@ -402,6 +402,16 @@ extern "C" {
 }
 #endif
 
+bool
+relay_key_press (GdkEventKey* ev, Gtk::Window* win)
+{
+       if (!key_press_focus_accelerator_handler (*win, ev)) {
+               return PublicEditor::instance().on_key_press_event(ev);
+       } else {
+               return true;
+       }
+}
+
 bool
 key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev)
 {
index 88c8536cc23f4d862357d3a23111c5d09ffb5ffa..faa2ac2b0579a240344b0a96e114cd7aef9f5ca5 100644 (file)
@@ -29,6 +29,7 @@
 #include <glibmm/ustring.h>
 
 #include "canvas.h"
+#include "public_editor.h"
 
 namespace Gtk {
        class Window;
@@ -75,6 +76,7 @@ bool canvas_item_visible (ArdourCanvas::Item* item);
 
 void set_color (Gdk::Color&, int);
 
+bool relay_key_press (GdkEventKey*, Gtk::Window*);
 bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev);
 bool possibly_translate_keyval_to_make_legal_accelerator (uint32_t& keyval);