9#include <QtCore/QLineF>
11#include <QtGui/QMouseEvent>
12#include <QtGui/QTouchEvent>
13#include <QtGui/QKeyEvent>
14#include <QtGui/QGuiApplication>
15#include <QtGui/QStyleHints>
17#include <QtQuick/QQuickView>
18#include <QtQuick/QQuickItem>
26 m_contentItem(view->contentItem()),
30 m_lastClickedItem(
nullptr)
33 m_nameDisplayTimer.setSingleShot(
true);
34 m_nameDisplayTimer.setInterval(QGuiApplication::styleHints()->mouseDoubleClickInterval());
35 connect(&m_nameDisplayTimer, &QTimer::timeout,
this, &InspectTool::showItemName);
40 m_hoverHighlight->setVisible(
true);
45 m_hoverHighlight->setVisible(
false);
50 m_mousePosition = event->position();
51 if (event->button() == Qt::LeftButton) {
53 m_hoverHighlight->setVisible(
false);
59 m_mousePosition = event->position();
60 if (event->button() == Qt::LeftButton) {
62 m_hoverHighlight->setVisible(
false);
73 m_mousePosition = event->position();
74 QQuickItem *item = inspector()->topVisibleItemAt(event->position().toPoint());
75 if (!item || item == m_lastClickedItem) {
76 m_hoverHighlight->setVisible(
false);
78 m_hoverHighlight->setItem(item);
79 m_hoverHighlight->setVisible(
true);
85 const auto &touchPoints = event->points();
87 switch (event->type()) {
88 case QEvent::TouchBegin:
89 if (touchPoints.size() == 1 && (event->touchPointStates() & QEventPoint::State::Pressed)) {
90 m_mousePosition = touchPoints.first().position();
96 case QEvent::TouchUpdate: {
97 if (touchPoints.size() > 1)
99 else if ((touchPoints.size() == 1) && (event->touchPointStates() & QEventPoint::State::Updated))
100 m_mousePosition = touchPoints.first().position();
103 case QEvent::TouchEnd: {
104 if (touchPoints.size() == 1 && m_tapEvent) {
106 bool doubleTap = event->timestamp() - m_touchTimestamp
107 <
static_cast<ulong>(QGuiApplication::styleHints()->mouseDoubleClickInterval());
109 m_nameDisplayTimer.stop();
114 m_touchTimestamp = event->timestamp();
125 if (m_lastClickedItem != inspector()->topVisibleItemAt(m_mousePosition))
127 QList<QQuickItem*> items = inspector()->itemsAt(m_mousePosition);
128 for (
int i = 0; i < items.size(); i++) {
129 if (m_lastItem == items[i]) {
130 if (i + 1 < items.size())
131 m_lastItem = items[i+1];
133 m_lastItem = items[0];
134 globalInspector()->setSelectedItems(QList<QQuickItem*>() << m_lastItem);
143 if (!inspector()->topVisibleItemAt(m_mousePosition))
145 m_lastClickedItem = inspector()->topVisibleItemAt(m_mousePosition);
146 m_lastItem = m_lastClickedItem;
147 globalInspector()->setSelectedItems(QList<QQuickItem*>() << m_lastClickedItem);
148 if (m_lastClickedItem == inspector()->topVisibleItemAt(m_mousePosition)) {
149 m_nameDisplayTimer.start();
157 globalInspector()->showSelectedItemName(m_lastItem, m_mousePosition);
174#include "moc_inspecttool.cpp"
QQuickItem * overlay() const