diff options
author | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2011-10-13 08:55:56 +0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-13 17:36:01 +0200 |
commit | 472028c1d43ec5fc9c8f054f24d286aa7873ad26 (patch) | |
tree | 197118c1a2c5b7efb804ecab5eae02e1582883ba /src/plugins/generic/touchscreen/qtouchscreen.cpp | |
parent | 1582407fc782c0befd0760633324dd5c206524a1 (diff) |
Calculate an area in the touchscreen qpa plugin.
Instead of ignoring the touch major/minor and returning a rectangle
with width and height of 1, the size of the area is now calculated
based on the major. This is incomplete and far from perfect but at
least it makes visualizers, like the fingerpaint example app, work out
of the box.
Change-Id: I3bb70b4d7247f289e5cae4e7de2460ecf2c9d009
Reviewed-on: http://codereview.qt-project.org/6566
Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
Diffstat (limited to 'src/plugins/generic/touchscreen/qtouchscreen.cpp')
-rw-r--r-- | src/plugins/generic/touchscreen/qtouchscreen.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
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); |