boolean ConnectManip::Manipulating (Event& e) { GraphicView* views = GetViewer()->GetGraphicView(); Rubberband* r = GetRubberband(); float cx, cy; if (r == nil) { return false; } if (e.eventType == MotionEvent) { _target = views->ConnectorIntersecting( e.x-SLOP, e.y-SLOP, e.x+SLOP, e.y+SLOP ); if (_target == nil) { r->Track(e.x, e.y); } else { _target->GetGraphic()->GetCenter(cx, cy); r->Track(Math::round(cx), Math::round(cy)); } } else if (e.eventType == UpEvent) { r->Erase(); return false; } return true; }
void View::Track (Event& e, Rubberband& r) { r.Draw(); Listen(allEvents); do { if (e.eventType == MotionEvent) { r.Track(e.x, e.y); } Read(e); } while (e.eventType != UpEvent); Listen(input); r.Erase(); }