summaryrefslogtreecommitdiffstats
path: root/src/plugins/generic
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/generic')
-rw-r--r--src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp3
-rw-r--r--src/plugins/generic/touchscreen/qtouchscreen.cpp6
2 files changed, 6 insertions, 3 deletions
diff --git a/src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp b/src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp
index 341d38773b..284330fd32 100644
--- a/src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp
+++ b/src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp
@@ -102,7 +102,8 @@ void QTouchEventSenderQPA::touch_point(QEvent::Type state,
// Generate a screen position that is always inside the active window or the default screen.
const int wx = winRect.left() + int(nx * winRect.width());
const int wy = winRect.top() + int(ny * winRect.height());
- tp.area.moveTopLeft(QPoint(wx, wy));
+ const qreal sizeRatio = (winRect.width() + winRect.height()) / qreal(hw_w + hw_h);
+ tp.area = QRect(wx, wy, tp.area.width() * sizeRatio, tp.area.height() * sizeRatio);
#ifdef POINT_DEBUG
qDebug() << " " << i << tp.area << tp.state << tp.id << tp.isPrimary << tp.pressure;
diff --git a/src/plugins/generic/touchscreen/qtouchscreen.cpp b/src/plugins/generic/touchscreen/qtouchscreen.cpp
index 2a56ac3451..8ab320ae9f 100644
--- a/src/plugins/generic/touchscreen/qtouchscreen.cpp
+++ b/src/plugins/generic/touchscreen/qtouchscreen.cpp
@@ -72,9 +72,10 @@ public:
int trackingId;
int x;
int y;
+ int maj;
Qt::TouchPointState state;
bool primary;
- Slot() : trackingId(0), x(0), y(0), state(Qt::TouchPointPressed), primary(false) { }
+ Slot() : trackingId(0), x(0), y(0), maj(1), state(Qt::TouchPointPressed), primary(false) { }
};
QMap<int, Slot> m_slots;
QMap<int, QPoint> m_lastReport;
@@ -254,6 +255,7 @@ void QTouchScreenData::processInputEvent(input_event *data)
m_slots[m_currentSlot].primary = m_slots.count() == 1;
}
} else if (data->code == ABS_MT_TOUCH_MAJOR) {
+ m_slots[m_currentSlot].maj = data->value;
if (data->value == 0)
m_slots[m_currentSlot].state = Qt::TouchPointReleased;
}
@@ -273,7 +275,7 @@ void QTouchScreenData::processInputEvent(input_event *data)
tp.id = slot.trackingId;
tp.isPrimary = slot.primary;
tp.pressure = slot.state == Qt::TouchPointReleased ? 0 : 1;
- tp.area = QRectF(slot.x, slot.y, 1, 1);
+ tp.area = QRectF(slot.x, slot.y, slot.maj, slot.maj);
tp.state = slot.state;
if (slot.state == Qt::TouchPointMoved && m_lastReport.contains(slot.trackingId)) {
QPoint lastPos = m_lastReport.value(slot.trackingId);