summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-08-21 13:48:31 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-08-21 13:48:31 +0000
commit12d5a44afad884323b2d26fe5c7a27037f3de94f (patch)
treeeaad9caa5702340b8c139da91f659efd991d9a7b
parent467be1f409ef47e7f5c31f74ef7d24921b27afa2 (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.cc1
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc4
-rw-r--r--gtk2_ardour/editor.cc2
-rw-r--r--gtk2_ardour/plugin_ui.cc6
-rw-r--r--gtk2_ardour/public_editor.h2
-rw-r--r--gtk2_ardour/utils.cc10
-rw-r--r--gtk2_ardour/utils.h2
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);