paired_ctrl(0)
{ }
+SmoothControl &SmoothControl::operator=(const SmoothControl &sc)
+{
+ Control::operator=(sc);
+
+ return *this;
+}
+
+SmoothControl::~SmoothControl()
+{
+ pair(0);
+}
+
void SmoothControl::pair(SmoothControl *ctrl)
{
if(ctrl==paired_ctrl)
if(paired_ctrl)
{
+ SmoothControl *old_pair=paired_ctrl;
paired_ctrl=0;
- paired_ctrl->pair(0);
+ old_pair->pair(0);
}
paired_ctrl=ctrl;
void SmoothControl::on_release()
{
- on_motion(0, -value);
+ if(value>0)
+ on_motion(0, -value);
}
void SmoothControl::on_motion(float v, float)
value=v;
signal_motion.emit(value);
- if(paired_ctrl)
- paired_ctrl->signal_motion.emit(-value);
+ if(paired_ctrl && paired_ctrl->get_value()!=-value)
+ paired_ctrl->on_motion(-value, -value-paired_ctrl->get_value());
}
} // namespace Input