bool ConnectorComponent::hitTest (int x, int y) { if (hitPath.contains ((float) x, (float) y)) { double distanceFromStart, distanceFromEnd; getDistancesFromEnds (x, y, distanceFromStart, distanceFromEnd); // avoid clicking the connector when over a pin return distanceFromStart > 7.0 && distanceFromEnd > 7.0; } return false; }
void ConnectorComponent::mouseDrag (const MouseEvent& e) { if ((! dragging) && ! e.mouseWasClicked()) { dragging = true; audioEngine.getDoc().removeConnection (sourceNodeId, sourceNodeChannel, destNodeId, destNodeChannel); double distanceFromStart, distanceFromEnd; getDistancesFromEnds (e.x, e.y, distanceFromStart, distanceFromEnd); const bool isNearerSource = (distanceFromStart < distanceFromEnd); getGraphEditor()->beginConnectorDrag (isNearerSource ? 0 : sourceNodeId, sourceNodeChannel, isNearerSource ? destNodeId : 0, destNodeChannel, e); } else if (dragging) { getGraphEditor()->dragConnector (e); } }
void mouseDrag (const MouseEvent& e) { if ((! dragging) && ! e.mouseWasClicked()) { dragging = true; graph.removeConnection (sourceFilterID, sourceFilterChannel, destFilterID, destFilterChannel); double distanceFromStart, distanceFromEnd; getDistancesFromEnds (e.x, e.y, distanceFromStart, distanceFromEnd); const bool isNearerSource = (distanceFromStart < distanceFromEnd); getGraphPanel()->beginConnectorDrag (isNearerSource ? 0 : sourceFilterID, sourceFilterChannel, isNearerSource ? destFilterID : 0, destFilterChannel, e); } else if (dragging) { getGraphPanel()->dragConnector (e); } }