1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
/*
SPDX-FileCopyrightText: 2014-2015 Eike Hein <hein@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "wheelinterceptor.h"
#include <QCoreApplication>
WheelInterceptor::WheelInterceptor(QQuickItem *parent)
: QQuickItem(parent)
{
}
WheelInterceptor::~WheelInterceptor()
{
}
QQuickItem *WheelInterceptor::destination() const
{
return m_destination;
}
void WheelInterceptor::setDestination(QQuickItem *destination)
{
if (m_destination != destination) {
m_destination = destination;
Q_EMIT destinationChanged();
}
}
void WheelInterceptor::wheelEvent(QWheelEvent *event)
{
if (m_destination) {
QCoreApplication::sendEvent(m_destination, event);
}
Q_EMIT wheelMoved(event->angleDelta());
}
QQuickItem *WheelInterceptor::findWheelArea(QQuickItem *parent) const
{
if (!parent) {
return nullptr;
}
const QList<QQuickItem *> childItems = parent->childItems();
for (QQuickItem *child : childItems) {
// HACK: ScrollView adds the WheelArea below its flickableItem with
// z==-1. This is reasonable non-risky considering we know about
// everything else in there, and worst case we break the mouse wheel.
if (child->z() >= -1) {
return child;
}
}
return nullptr;
}
#include "moc_wheelinterceptor.cpp"
|