263 Q_Q(QQuickTreeViewDelegate);
267 delete m_tapHandlerOnIndicator.data();
269 auto indicator = q->indicator();
273 m_tapHandlerOnIndicator =
new QQuickTapHandler(indicator);
274 m_tapHandlerOnIndicator->setAcceptedModifiers(Qt::NoModifier);
276 m_tapHandlerOnIndicator->setGesturePolicy(QQuickTapHandler::ReleaseWithinBounds);
277 connect(m_tapHandlerOnIndicator, &QQuickTapHandler::tapped,
this, &QQuickTreeViewDelegatePrivate::toggleExpanded);
290QQuickTreeViewDelegate::QQuickTreeViewDelegate(QQuickItem *parent)
291 : QQuickItemDelegate(*(
new QQuickTreeViewDelegatePrivate), parent)
293 Q_D(QQuickTreeViewDelegate);
295 auto tapHandler =
new QQuickTapHandler(
this);
296 tapHandler->setAcceptedModifiers(Qt::NoModifier);
297 QObjectPrivate::connect(
this, &QQuickAbstractButton::indicatorChanged, d, &QQuickTreeViewDelegatePrivate::updateIndicatorPointerHandlers);
303 connect(tapHandler, &QQuickTapHandler::pressedChanged, [
this, d, tapHandler] {
304 auto view = treeView();
305 if (view && !view->pointerNavigationEnabled())
308 const QQuickHandlerPoint p = tapHandler->point();
309 if (tapHandler->isPressed())
310 d->handlePress(p.position(), 0);
311 else if (tapHandler->tapCount() > 0)
312 d->handleRelease(p.position(), 0);
316 if (tapHandler->tapCount() > 1 && !tapHandler->isPressed())
317 emit doubleClicked();
321void QQuickTreeViewDelegate::geometryChange(
const QRectF &newGeometry,
const QRectF &oldGeometry)
323 Q_D(QQuickTreeViewDelegate);
325 QQuickItemDelegate::geometryChange(newGeometry, oldGeometry);
326 d->updateIndicatorVisibility();
361void QQuickTreeViewDelegate::setIndentation(qreal indentation)
363 Q_D(QQuickTreeViewDelegate);
364 if (qFuzzyCompare(d->m_indentation, indentation))
367 d->m_indentation = indentation;
368 emit indentationChanged();
376void QQuickTreeViewDelegate::setIsTreeNode(
bool isTreeNode)
378 Q_D(QQuickTreeViewDelegate);
379 if (d->m_isTreeNode == isTreeNode)
382 d->m_isTreeNode = isTreeNode;
383 d->updateIndicatorVisibility();
384 emit isTreeNodeChanged();
392void QQuickTreeViewDelegate::setHasChildren(
bool hasChildren)
394 Q_D(QQuickTreeViewDelegate);
395 if (d->m_hasChildren == hasChildren)
398 d->m_hasChildren = hasChildren;
399 d->updateIndicatorVisibility();
400 emit hasChildrenChanged();
493void QQuickTreeViewDelegate::componentComplete()
495 Q_D(QQuickTreeViewDelegate);
496 QQuickItemDelegate::componentComplete();
497 d->updateIndicatorVisibility();
498 d->updateIndicatorPointerHandlers();
506void QQuickTreeViewDelegate::setLeftMargin(qreal leftMargin)
508 Q_D(QQuickTreeViewDelegate);
509 if (qFuzzyCompare(d->m_leftMargin, leftMargin))
512 d->m_leftMargin = leftMargin;
513 emit leftMarginChanged();
521void QQuickTreeViewDelegate::setRightMargin(qreal rightMargin)
523 Q_D(QQuickTreeViewDelegate);
524 if (qFuzzyCompare(d->m_rightMargin, rightMargin))
527 d->m_rightMargin = rightMargin;
528 emit rightMarginChanged();