20 dragInProgress =
false;
22 this->dragHandleIsHovered =
false;
23 mousePositionAtLastPortCountAdjustment = QPointF(NAN,NAN);
25 updateCachedBoundingRect();
37 this->setSelected(
true);
46 _eligibilityHighlight,
52 _eligibilityHighlight,
57 painter->fillPath(drawerFrame, drawerColors->
nodeFill());
60 if (dragHandleIsHovered)
62 painter->setClipPath(drawerFrame);
63 painter->fillRect(getDragHandleRect(), dragHandleColors->
nodeFill());
64 painter->setClipping(
false);
66 painter->fillPath(getMakeListDragHandlePath(), dragHandleColors->
nodeFrame());
72 delete dragHandleColors;
78 QPainterPath VuoRendererInputListDrawer::getMakeListNodePath()
const
88 QPainterPath VuoRendererInputListDrawer::getMakeListDragHandlePath()
const
91 QRectF r = getDragHandleRect();
92 QRectF r2(floor(r.center().x()) - 3, r.top()+2, 7, 1);
93 p.addRoundedRect(r2, 1,1);
102 return cachedBoundingRect;
105 void VuoRendererInputListDrawer::updateCachedBoundingRect()
107 cachedBoundingRect = getMakeListNodePath().boundingRect();
111 cachedBoundingRect.adjust(-1,-1,1,1);
113 cachedBoundingRect = cachedBoundingRect.toAlignedRect();
122 updateCachedBoundingRect();
134 p.setFillRule(Qt::WindingFill);
142 QRectF VuoRendererInputListDrawer::getDragHandleRect()
const
144 const qreal handleVerticalOffset = 6;
145 const qreal handleHeight = 6;
159 return getDragHandleRect().adjusted(-3,-5,3,5);
168 prepareGeometryChange();
169 dragHandleIsHovered = cursorAboveDragHandle;
178 prepareGeometryChange();
179 dragHandleIsHovered = cursorAboveDragHandle;
187 prepareGeometryChange();
188 dragHandleIsHovered =
false;
194 void VuoRendererInputListDrawer::mousePressEvent(QGraphicsSceneMouseEvent *event)
196 bool leftButtonPressed = (
event->button() == Qt::LeftButton);
198 if (leftButtonPressed && pressedOnDragHandle)
201 mousePositionAtLastPortCountAdjustment =
event->pos();
205 QGraphicsItem::mousePressEvent(event);
211 void VuoRendererInputListDrawer::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
213 bool leftMouseButtonPressed = (
event->buttons() & Qt::LeftButton);
215 if (leftMouseButtonPressed && dragInProgress)
217 if (isnan(mousePositionAtLastPortCountAdjustment.y()))
218 mousePositionAtLastPortCountAdjustment = event->pos();
220 QPointF delta =
event->pos() - mousePositionAtLastPortCountAdjustment;
225 triggerPortCountAdjustment(round(steps), event);
229 triggerPortCountAdjustment(fmax(-(
int)
drawerPorts.size(), round(steps)), event);
233 QGraphicsItem::mouseMoveEvent(event);
239 void VuoRendererInputListDrawer::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
241 if (event->button() == Qt::LeftButton)
243 if (scene() && (scene()->mouseGrabberItem() ==
this))
252 QGraphicsItem::mouseReleaseEvent(event);
261 this->dragInProgress = inProgress;
266 mousePositionAtLastPortCountAdjustment = QPointF(NAN,NAN);
273 void VuoRendererInputListDrawer::triggerPortCountAdjustment(
int portCountDelta, QGraphicsSceneMouseEvent *event)
275 mousePositionAtLastPortCountAdjustment =
event->pos();
276 dragHandleIsHovered =
false;