mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-09 23:25:43 +01:00
[Summary] Implementing behavior per request from Igor
This commit is contained in:
parent
c8a0f55e4b
commit
3c2b0d446a
2 changed files with 18 additions and 63 deletions
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue