return mouseHelper;
}
+void DisplayBase::clearInput()
+{
+ qDebug("clear input");
+
+ if (tsHelper != NULL) {
+ tsHelper->touchReleased();
+ }
+ if (mouseHelper != NULL) {
+ mouseHelper->mouseReleased();
+ }
+
+ isDragging = false;
+}
+
/* called by overriding function */
void DisplayBase::handleMousePress(QMouseEvent *event)
{
if (mouseHelper != NULL) {
mouseHelper->mousePressed();
}
+ } else {
+ if (isDragging == true) {
+ clearInput();
+ }
}
}
void DisplayBase::turnOnMovingMode()
{
+ if (isDragging == true) {
+ clearInput();
+ }
+
movingMode = true;
widget->setCursor(Qt::SizeAllCursor);
this->parent = parent;
this->mtTracker =
new MultiTouchTracker(this, get_max_touch_point());
+ this->lastPressedPos = QPoint(0, 0);
}
void *TouchScreenHelper::getParent()
/* single-touch processing */
virtio_touchscreen_event(guestPos.x(), guestPos.y(), 0, 1);
+ lastPressedPos = guestPos;
}
void TouchScreenHelper::touchReleased(QPoint hostPos, QPoint guestPos)
{
- /* multi-touch processing */
+ /* multi-touch processing */
if (mtTracker->getMtMode() != MultiTouchTracker::MT_OFF) {
mtTracker->releaseSelectedTouchPoint();
return;
/* single-touch processing */
virtio_touchscreen_event(guestPos.x(), guestPos.y(), 0, 0);
+ lastPressedPos = QPoint(0, 0);
+}
+
+void TouchScreenHelper::touchReleased()
+{
+ /* single-touch processing */
+ if (lastPressedPos != QPoint(0, 0)) {
+ virtio_touchscreen_event(lastPressedPos.x(), lastPressedPos.y(), 0, 0);
+ lastPressedPos = QPoint(0, 0);
+ }
+
+ /* multi-touch processing */
+ if (mtTracker->getMtMode() != MultiTouchTracker::MT_OFF) {
+ mtTracker->finishTracking();
+ }
}
void TouchScreenHelper::touchMoved(QPoint hostPos, QPoint guestPos)
/* single-touch processing */
virtio_touchscreen_event(guestPos.x(), guestPos.y(), 0, 1);
+ lastPressedPos = guestPos;
}
TouchScreenHelper::~TouchScreenHelper()