From 3c2b0d446a621da0ccfe6ca5ae40cf94e0b58387 Mon Sep 17 00:00:00 2001 From: VKamyshniy Date: Sat, 10 Jan 2015 12:43:54 +0200 Subject: [PATCH] [Summary] Implementing behavior per request from Igor --- gtk2_ardour/waves_zoom_control.cc | 79 +++++++------------------------ gtk2_ardour/waves_zoom_control.h | 2 - 2 files changed, 18 insertions(+), 63 deletions(-) diff --git a/gtk2_ardour/waves_zoom_control.cc b/gtk2_ardour/waves_zoom_control.cc index 1b41b2f1e9..f1f2efb82b 100644 --- a/gtk2_ardour/waves_zoom_control.cc +++ b/gtk2_ardour/waves_zoom_control.cc @@ -55,9 +55,17 @@ WavesZoomControl::render (cairo_t* cr, cairo_rectangle_t*) break; case StateSliding: - pixbuf = _state_sliding_pixbuf; + { + double current_zoom = _adjustment.get_value (); + if (current_zoom < _begin_motion_zoom) { + pixbuf = _state_decreasing_zoom_pixbuf; + } else if (current_zoom > _begin_motion_zoom) { + pixbuf = _state_increasing_zoom_pixbuf; + } else { + pixbuf = _state_sliding_pixbuf; + } break; - + } case StateButtonUpActive: pixbuf = _state_increasing_zoom_pixbuf; break; @@ -173,72 +181,21 @@ WavesZoomControl::on_motion_notify_event (GdkEventMotion* ev) case StateButtonDownActive: break; case StateSliding: - _adjustment.set_value (std::max (std::min (_begin_motion_zoom + _adjustment.get_step_increment () * (_begin_motion_y - ev->y), - _adjustment.get_upper ()), - _adjustment.get_lower ())); + { + double zoom_factor = std::max (std::min (_begin_motion_zoom + _adjustment.get_step_increment () * (_begin_motion_y - ev->y), + _adjustment.get_upper ()), + _adjustment.get_lower ()); + _adjustment.set_value (zoom_factor); + queue_draw (); break; + } default: - dbg_msg("WavesZoomControl::on_enter_notify_event () : Unexpected state of WavesZoomControl!"); + dbg_msg("WavesZoomControl::on_motion_notify_event () : Unexpected state of WavesZoomControl!"); break; } return true; } -bool -WavesZoomControl::on_enter_notify_event (GdkEventCrossing* ev) -{ - switch (_state) { - case StateIdle: - break; - - case StateSliding: - break; - - case StateButtonUpLeft: - _state = StateButtonUpActive; - queue_draw (); - break; - - case StateButtonDownLeft: - _state = StateButtonDownActive; - queue_draw (); - break; - - default: - dbg_msg("WavesZoomControl::on_enter_notify_event () : Unexpected state of WavesZoomControl!"); - break; - } - - return CairoWidget::on_enter_notify_event (ev); -} - -bool -WavesZoomControl::on_leave_notify_event (GdkEventCrossing* ev) -{ - switch (_state) { - case StateIdle: - break; - - case StateSliding: - break; - - case StateButtonUpActive: - _state = StateButtonUpLeft; - queue_draw (); - break; - - case StateButtonDownActive: - _state = StateButtonDownLeft; - queue_draw (); - break; - - default: - dbg_msg("WavesZoomControl::on_leave_notify_event () : Unexpected state of WavesZoomControl!"); - break; - } - return CairoWidget::on_leave_notify_event (ev); -} - WavesZoomControl::ControlArea WavesZoomControl::_area_by_point (int x, int y) { diff --git a/gtk2_ardour/waves_zoom_control.h b/gtk2_ardour/waves_zoom_control.h index e1556e4c9f..f6ff575b06 100644 --- a/gtk2_ardour/waves_zoom_control.h +++ b/gtk2_ardour/waves_zoom_control.h @@ -34,8 +34,6 @@ class WavesZoomControl : public CairoWidget protected: void render (cairo_t *, cairo_rectangle_t*); void on_size_request (Gtk::Requisition* req); - bool on_enter_notify_event (GdkEventCrossing*); - bool on_leave_notify_event (GdkEventCrossing*); bool on_motion_notify_event (GdkEventMotion*); private: