20 dragInProgress =
false;
22 this->dragHandleIsHovered =
false;
23 mousePositionAtLastPortCountAdjustment = QPointF(NAN,NAN);
25 updateCachedBoundingRect();
41 _eligibilityHighlight,
47 _eligibilityHighlight,
52 painter->fillPath(drawerFrame, drawerColors->
nodeFill());
55 if (dragHandleIsHovered)
57 painter->setClipPath(drawerFrame);
58 painter->fillRect(getDragHandleRect(), dragHandleColors->
nodeFill());
59 painter->setClipping(
false);
61 painter->fillPath(getMakeListDragHandlePath(), dragHandleColors->
nodeFrame());
67 delete dragHandleColors;
73QPainterPath VuoRendererInputListDrawer::getMakeListNodePath()
const
83QPainterPath VuoRendererInputListDrawer::getMakeListDragHandlePath()
const
86 QRectF r = getDragHandleRect();
87 QRectF r2(floor(r.center().x()) - 3, r.top()+2, 7, 1);
88 p.addRoundedRect(r2, 1,1);
97 return cachedBoundingRect;
100void VuoRendererInputListDrawer::updateCachedBoundingRect()
102 cachedBoundingRect = getMakeListNodePath().boundingRect();
106 cachedBoundingRect.adjust(-1,-1,1,1);
108 cachedBoundingRect = cachedBoundingRect.toAlignedRect();
117 updateCachedBoundingRect();
129 p.setFillRule(Qt::WindingFill);
137QRectF VuoRendererInputListDrawer::getDragHandleRect()
const
139 const qreal handleVerticalOffset = 6;
140 const qreal handleHeight = 6;
154 return getDragHandleRect().adjusted(-3,-5,3,5);
163 prepareGeometryChange();
164 dragHandleIsHovered = cursorAboveDragHandle;
173 prepareGeometryChange();
174 dragHandleIsHovered = cursorAboveDragHandle;
182 prepareGeometryChange();
183 dragHandleIsHovered =
false;
189void VuoRendererInputListDrawer::mousePressEvent(QGraphicsSceneMouseEvent *event)
191 bool leftButtonPressed = (
event->button() == Qt::LeftButton);
193 if (leftButtonPressed && pressedOnDragHandle)
196 mousePositionAtLastPortCountAdjustment =
event->pos();
200 QGraphicsItem::mousePressEvent(event);
206void VuoRendererInputListDrawer::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
208 bool leftMouseButtonPressed = (
event->buttons() & Qt::LeftButton);
210 if (leftMouseButtonPressed && dragInProgress)
212 if (isnan(mousePositionAtLastPortCountAdjustment.y()))
213 mousePositionAtLastPortCountAdjustment = event->pos();
215 QPointF delta =
event->pos() - mousePositionAtLastPortCountAdjustment;
220 triggerPortCountAdjustment(round(steps), event);
224 triggerPortCountAdjustment(fmax(-(
int)
drawerPorts.size(), round(steps)), event);
228 QGraphicsItem::mouseMoveEvent(event);
234void VuoRendererInputListDrawer::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
236 if (event->button() == Qt::LeftButton)
238 if (scene() && (scene()->mouseGrabberItem() ==
this))
247 QGraphicsItem::mouseReleaseEvent(event);
256 this->dragInProgress = inProgress;
261 mousePositionAtLastPortCountAdjustment = QPointF(NAN,NAN);
268void VuoRendererInputListDrawer::triggerPortCountAdjustment(
int portCountDelta, QGraphicsSceneMouseEvent *event)
270 mousePositionAtLastPortCountAdjustment =
event->pos();
271 dragHandleIsHovered =
false;