diff options
author | Carl Hetherington <carl@carlh.net> | 2010-09-21 14:22:13 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-09-21 14:22:13 +0000 |
commit | 3aa1f2147531de91f6a59fde7ba9501620fd4dda (patch) | |
tree | f7cf8d12a149559c74f6a55dd6c64679e9591857 /gtk2_ardour/editor_canvas.cc | |
parent | a017411dfab6d85fdbdcb9d4fd17a05f0ee2cc2a (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.cc | 26 |
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; +} |