mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 04:06:26 +01:00
add scroll event handling to the vbap panner GUI; clamp vbap pos+width values (but not via clamp_*())
git-svn-id: svn://localhost/ardour2/branches/3.0@8932 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
7b8a76de25
commit
2daa616e02
4 changed files with 29 additions and 5 deletions
|
|
@ -225,8 +225,6 @@ AudioTimeAxisView::ensure_pan_views (bool show)
|
||||||
set<Evoral::Parameter> params = _route->panner()->what_can_be_automated();
|
set<Evoral::Parameter> params = _route->panner()->what_can_be_automated();
|
||||||
set<Evoral::Parameter>::iterator p;
|
set<Evoral::Parameter>::iterator p;
|
||||||
|
|
||||||
cerr << _route->name() << " the panner has " << params.size() << " params that can be automated\n";
|
|
||||||
|
|
||||||
for (p = params.begin(); p != params.end(); ++p) {
|
for (p = params.begin(); p != params.end(); ++p) {
|
||||||
boost::shared_ptr<ARDOUR::AutomationControl> pan_control = _route->pannable()->automation_control(*p);
|
boost::shared_ptr<ARDOUR::AutomationControl> pan_control = _route->pannable()->automation_control(*p);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -285,6 +285,7 @@ Panner2d::on_motion_notify_event (GdkEventMotion *ev)
|
||||||
|
|
||||||
return handle_motion (x, y, state);
|
return handle_motion (x, y, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Panner2d::on_expose_event (GdkEventExpose *event)
|
Panner2d::on_expose_event (GdkEventExpose *event)
|
||||||
{
|
{
|
||||||
|
|
@ -536,6 +537,23 @@ Panner2d::handle_motion (gint evx, gint evy, GdkModifierType state)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
Panner2d::on_scroll_event (GdkEventScroll* ev)
|
||||||
|
{
|
||||||
|
switch (ev->direction) {
|
||||||
|
case GDK_SCROLL_UP:
|
||||||
|
case GDK_SCROLL_RIGHT:
|
||||||
|
panner->set_position (panner->pannable()->pan_azimuth_control->get_value() - 1.0/360.0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GDK_SCROLL_DOWN:
|
||||||
|
case GDK_SCROLL_LEFT:
|
||||||
|
panner->set_position (panner->pannable()->pan_azimuth_control->get_value() + 1.0/360.0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Panner2d::cart_to_gtk (CartesianVector& c) const
|
Panner2d::cart_to_gtk (CartesianVector& c) const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,7 @@ class Panner2d : public Gtk::DrawingArea
|
||||||
bool on_button_press_event (GdkEventButton *);
|
bool on_button_press_event (GdkEventButton *);
|
||||||
bool on_button_release_event (GdkEventButton *);
|
bool on_button_release_event (GdkEventButton *);
|
||||||
bool on_motion_notify_event (GdkEventMotion *);
|
bool on_motion_notify_event (GdkEventMotion *);
|
||||||
|
bool on_scroll_event (GdkEventScroll *);
|
||||||
void on_size_allocate (Gtk::Allocation& alloc);
|
void on_size_allocate (Gtk::Allocation& alloc);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -436,12 +436,19 @@ VBAPanner::get_speakers () const
|
||||||
void
|
void
|
||||||
VBAPanner::set_position (double p)
|
VBAPanner::set_position (double p)
|
||||||
{
|
{
|
||||||
|
if (p < 0.0) {
|
||||||
|
p = 1.0 + p;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p > 1.0) {
|
||||||
|
p = fmod (p, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
_pannable->pan_azimuth_control->set_value (p);
|
_pannable->pan_azimuth_control->set_value (p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
VBAPanner::set_width (double p)
|
VBAPanner::set_width (double w)
|
||||||
{
|
{
|
||||||
_pannable->pan_width_control->set_value (p);
|
_pannable->pan_width_control->set_value (min (1.0, max (-1.0, w)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue