From 21914c884eebbddbb38804a8d51a38323e6de726 Mon Sep 17 00:00:00 2001 From: Colin Fletcher Date: Fri, 21 Jun 2013 20:13:44 +0100 Subject: [PATCH] Make scroll-wheel modifier keys consistent in main editor window. Add constants for the keyboard modifiers that should be used for vertical zoom, horizontal zoom, and horizontal scrolling in the main editor window, and use these where appropriate rather than using Keyboard::PrimaryModifier and friends directly. --- gtk2_ardour/editor_canvas_events.cc | 12 ++++++------ gtk2_ardour/time_axis_view.cc | 4 ++-- libs/gtkmm2ext/gtkmm2ext/keyboard.h | 5 +++++ libs/gtkmm2ext/keyboard.cc | 5 +++++ 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index fd44ed3f2e..79cc1e066f 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -66,17 +66,17 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) retry: switch (direction) { case GDK_SCROLL_UP: - if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { + if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomHorizontalModifier)) { //for mouse-wheel zoom, force zoom-focus to mouse Editing::ZoomFocus temp_focus = zoom_focus; zoom_focus = Editing::ZoomFocusMouse; temporal_zoom_step (false); zoom_focus = temp_focus; return true; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) { direction = GDK_SCROLL_LEFT; goto retry; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (sigc::mem_fun(*this, &Editor::track_height_step_timeout), 500); std::pair const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize); @@ -95,17 +95,17 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) break; case GDK_SCROLL_DOWN: - if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { + if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomHorizontalModifier)) { //for mouse-wheel zoom, force zoom-focus to mouse Editing::ZoomFocus temp_focus = zoom_focus; zoom_focus = Editing::ZoomFocusMouse; temporal_zoom_step (true); zoom_focus = temp_focus; return true; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) { direction = GDK_SCROLL_RIGHT; goto retry; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (sigc::mem_fun(*this, &Editor::track_height_step_timeout), 500); std::pair const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize); diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 8d2276bfb9..08b00ec7fa 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -310,7 +310,7 @@ TimeAxisView::controls_ebox_scroll (GdkEventScroll* ev) { switch (ev->direction) { case GDK_SCROLL_UP: - if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { + if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) { /* See Editor::_stepping_axis_view for notes on this hack */ Editor& e = dynamic_cast (_editor); if (!e.stepping_axis_view ()) { @@ -325,7 +325,7 @@ TimeAxisView::controls_ebox_scroll (GdkEventScroll* ev) break; case GDK_SCROLL_DOWN: - if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { + if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) { /* See Editor::_stepping_axis_view for notes on this hack */ Editor& e = dynamic_cast (_editor); if (!e.stepping_axis_view ()) { diff --git a/libs/gtkmm2ext/gtkmm2ext/keyboard.h b/libs/gtkmm2ext/gtkmm2ext/keyboard.h index 909f791403..84988e1525 100644 --- a/libs/gtkmm2ext/gtkmm2ext/keyboard.h +++ b/libs/gtkmm2ext/gtkmm2ext/keyboard.h @@ -59,6 +59,11 @@ class Keyboard : public sigc::trackable, PBD::Stateful static uint32_t GainFineScaleModifier; static uint32_t GainExtraFineScaleModifier; + // Modifiers for scroll wheel + static uint32_t ScrollZoomVerticalModifier; + static uint32_t ScrollZoomHorizontalModifier; + static uint32_t ScrollHorizontalModifier; + static const char* primary_modifier_name (); static const char* secondary_modifier_name (); static const char* tertiary_modifier_name (); diff --git a/libs/gtkmm2ext/keyboard.cc b/libs/gtkmm2ext/keyboard.cc index 9966972edb..f694471d9a 100644 --- a/libs/gtkmm2ext/keyboard.cc +++ b/libs/gtkmm2ext/keyboard.cc @@ -94,6 +94,11 @@ const char* Keyboard::rangeselect_modifier_name() { return S_("Key|Shift"); } guint Keyboard::GainFineScaleModifier = Keyboard::PrimaryModifier; guint Keyboard::GainExtraFineScaleModifier = Keyboard::SecondaryModifier; +guint Keyboard::ScrollZoomVerticalModifier = Keyboard::SecondaryModifier; +guint Keyboard::ScrollZoomHorizontalModifier = Keyboard::PrimaryModifier; +guint Keyboard::ScrollHorizontalModifier = Keyboard::TertiaryModifier; + + Keyboard* Keyboard::_the_keyboard = 0; Gtk::Window* Keyboard::current_window = 0; bool Keyboard::_some_magic_widget_has_focus = false;