{
panner_shell->Changed.connect (connections, invalidator (*this), boost::bind (&Panner2d::handle_state_change, this), gui_context());
- panner_shell->pannable()->pan_azimuth_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context());
- panner_shell->pannable()->pan_width_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context());
+ panner_shell->panner()->SignalPositionChanged.connect (panconnect, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context());
drag_target = 0;
set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK);
void
Panner2d::handle_state_change ()
{
+ panconnect.drop_connections();
+ panner_shell->panner()->SignalPositionChanged.connect (panconnect, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context());
queue_draw ();
}
void label_signals ();
PBD::ScopedConnectionList connections;
+ PBD::ScopedConnectionList panconnect;
/* cartesian coordinates in GTK units ; adjust to same but on a circle of radius 1.0
and centered in the middle of our area
virtual void reset () = 0;
+ /* azimut, width or elevation updated -> recalc signal_position -> emit Changed */
+ PBD::Signal0<void> SignalPositionChanged;
+
void set_automation_state (AutoState);
AutoState automation_state() const;
void set_automation_style (AutoStyle);
s->direction = AngularVector (center, elevation);
compute_gains (s->desired_gains, s->desired_outputs, s->direction.azi, s->direction.ele);
}
+
+ SignalPositionChanged(); /* emit */
}
void