264 Q_Q(QQuickTreeViewDelegate);
268 delete m_tapHandlerOnIndicator.data();
270 auto indicator = q->indicator();
274 m_tapHandlerOnIndicator =
new QQuickTapHandler(indicator);
275 m_tapHandlerOnIndicator->setAcceptedModifiers(Qt::NoModifier);
277 m_tapHandlerOnIndicator->setGesturePolicy(QQuickTapHandler::ReleaseWithinBounds);
291QQuickTreeViewDelegate::QQuickTreeViewDelegate(QQuickItem *parent)
292 : QQuickItemDelegate(*(
new QQuickTreeViewDelegatePrivate), parent)
294 Q_D(QQuickTreeViewDelegate);
296 auto tapHandler =
new QQuickTapHandler(
this);
297 tapHandler->setAcceptedModifiers(Qt::NoModifier);
298 QObjectPrivate::connect(
this, &QQuickAbstractButton::indicatorChanged, d, &QQuickTreeViewDelegatePrivate::updateIndicatorPointerHandlers);
304 connect(tapHandler, &QQuickTapHandler::pressedChanged,
this, [
this, d, tapHandler] {
305 auto view = treeView();
306 if (view && !view->pointerNavigationEnabled())
309 const QQuickHandlerPoint p = tapHandler->point();
310 if (tapHandler->isPressed())
311 d->handlePress(p.position(), 0);
312 else if (tapHandler->tapCount() > 0)
313 d->handleRelease(p.position(), 0);
317 if (tapHandler->tapCount() > 1 && !tapHandler->isPressed())
318 emit doubleClicked();
322void QQuickTreeViewDelegate::geometryChange(
const QRectF &newGeometry,
const QRectF &oldGeometry)
324 Q_D(QQuickTreeViewDelegate);
326 QQuickItemDelegate::geometryChange(newGeometry, oldGeometry);
327 d->updateIndicatorVisibility();
362void QQuickTreeViewDelegate::setIndentation(qreal indentation)
364 Q_D(QQuickTreeViewDelegate);
365 if (qFuzzyCompare(d->m_indentation, indentation))
368 d->m_indentation = indentation;
369 emit indentationChanged();
377void QQuickTreeViewDelegate::setIsTreeNode(
bool isTreeNode)
379 Q_D(QQuickTreeViewDelegate);
380 if (d->m_isTreeNode == isTreeNode)
383 d->m_isTreeNode = isTreeNode;
384 d->updateIndicatorVisibility();
385 emit isTreeNodeChanged();
393void QQuickTreeViewDelegate::setHasChildren(
bool hasChildren)
395 Q_D(QQuickTreeViewDelegate);
396 if (d->m_hasChildren == hasChildren)
399 d->m_hasChildren = hasChildren;
400 d->updateIndicatorVisibility();
401 emit hasChildrenChanged();
494void QQuickTreeViewDelegate::componentComplete()
496 Q_D(QQuickTreeViewDelegate);
497 QQuickItemDelegate::componentComplete();
498 d->updateIndicatorVisibility();
499 d->updateIndicatorPointerHandlers();
507void QQuickTreeViewDelegate::setLeftMargin(qreal leftMargin)
509 Q_D(QQuickTreeViewDelegate);
510 if (qFuzzyCompare(d->m_leftMargin, leftMargin))
513 d->m_leftMargin = leftMargin;
514 emit leftMarginChanged();
522void QQuickTreeViewDelegate::setRightMargin(qreal rightMargin)
524 Q_D(QQuickTreeViewDelegate);
525 if (qFuzzyCompare(d->m_rightMargin, rightMargin))
528 d->m_rightMargin = rightMargin;
529 emit rightMarginChanged();