diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-08-21 13:48:31 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-08-21 13:48:31 +0000 |
commit | 12d5a44afad884323b2d26fe5c7a27037f3de94f (patch) | |
tree | eaad9caa5702340b8c139da91f659efd991d9a7b | |
parent | 467be1f409ef47e7f5c31f74ef7d24921b27afa2 (diff) |
make tearoff windows still forward key events (and thus bindings still work); make big clock window into a utility window, not a menu (!)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5562 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/editor.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/plugin_ui.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/public_editor.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/utils.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/utils.h | 2 |
7 files changed, 20 insertions, 7 deletions
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 6ff37bce2e..374de94048 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -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); diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index ad9898f822..90faeb33d3 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -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"))); diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 51333d5a65..256f053f08 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -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); diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index 0705d22a8b..a159c2c0fa 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -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 diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index bf21950c68..08831f2668 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -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__ diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index a762887d3f..99a56f355e 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -403,6 +403,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) { GtkWindow* win = window.gobj(); diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h index 88c8536cc2..faa2ac2b05 100644 --- a/gtk2_ardour/utils.h +++ b/gtk2_ardour/utils.h @@ -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); |