summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_canvas.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-09-21 14:22:13 +0000
committerCarl Hetherington <carl@carlh.net>2010-09-21 14:22:13 +0000
commit3aa1f2147531de91f6a59fde7ba9501620fd4dda (patch)
treef7cf8d12a149559c74f6a55dd6c64679e9591857 /gtk2_ardour/editor_canvas.cc
parenta017411dfab6d85fdbdcb9d4fd17a05f0ee2cc2a (diff)
Updating zoom mouse cursor on modifier press. Fixes #274.
git-svn-id: svn://localhost/ardour2/branches/3.0@7820 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_canvas.cc')
-rw-r--r--gtk2_ardour/editor_canvas.cc26
1 files changed, 25 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 5989cb7c92..705e7efa3b 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -46,6 +46,7 @@
#include "editor_group_tabs.h"
#include "editor_routes.h"
#include "editor_summary.h"
+#include "keyboard.h"
#include "i18n.h"
@@ -282,9 +283,11 @@ Editor::initialize_canvas ()
track_canvas->signal_button_press_event().connect (sigc::mem_fun (*this, &Editor::track_canvas_button_press_event));
track_canvas->signal_button_release_event().connect (sigc::mem_fun (*this, &Editor::track_canvas_button_release_event));
track_canvas->signal_drag_motion().connect (sigc::mem_fun (*this, &Editor::track_canvas_drag_motion));
+ track_canvas->signal_key_press_event().connect (sigc::mem_fun (*this, &Editor::track_canvas_key_press));
+ track_canvas->signal_key_release_event().connect (sigc::mem_fun (*this, &Editor::track_canvas_key_release));
track_canvas->set_name ("EditorMainCanvas");
- track_canvas->add_events (Gdk::POINTER_MOTION_HINT_MASK|Gdk::SCROLL_MASK);
+ track_canvas->add_events (Gdk::POINTER_MOTION_HINT_MASK | Gdk::SCROLL_MASK | Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);
track_canvas->signal_leave_notify_event().connect (sigc::mem_fun(*this, &Editor::left_track_canvas));
track_canvas->signal_enter_notify_event().connect (sigc::mem_fun(*this, &Editor::entered_track_canvas));
track_canvas->set_flags (CAN_FOCUS);
@@ -914,3 +917,24 @@ Editor::horizontal_position () const
{
return frame_to_unit (leftmost_frame);
}
+
+bool
+Editor::track_canvas_key_press (GdkEventKey* event)
+{
+ /* XXX: event does not report the modifier key pressed down, AFAICS, so use the Keyboard object instead */
+ if (mouse_mode == Editing::MouseZoom && Keyboard::the_keyboard().key_is_down (GDK_Control_L)) {
+ track_canvas->get_window()->set_cursor (*zoom_out_cursor);
+ }
+
+ return false;
+}
+
+bool
+Editor::track_canvas_key_release (GdkEventKey* event)
+{
+ if (mouse_mode == Editing::MouseZoom && !Keyboard::the_keyboard().key_is_down (GDK_Control_L)) {
+ track_canvas->get_window()->set_cursor (*zoom_in_cursor);
+ }
+
+ return false;
+}