tsHelper->mousePressed(event, getGuestPos(event->pos()));
}
if (mouseHelper != NULL) {
- mouseHelper->mousePressed(event);
+ mouseHelper->mousePressed();
}
}
}
releaseWindow();
win->turnOffMovingMode();
+
+ if (mouseHelper != NULL) {
+ mouseHelper->mouseSync(getGuestPos(event->pos()));
+ }
return;
}
tsHelper->mouseReleased(event, getGuestPos(event->pos()));
}
if (mouseHelper != NULL) {
- mouseHelper->mouseReleased(event);
+ mouseHelper->mouseReleased();
}
}
}
qDebug("drag out: auto release");
isDragging = false;
- mouseHelper->mouseReleased(event);
+ mouseHelper->mouseReleased();
return;
}
}
- mouseHelper->mouseMoved(event,
+ mouseHelper->mouseMoved(
event->pos(), getGuestPos(event->pos()));
}
}
void DisplayBase::handleMouseEnter(QEvent *event)
{
if (mouseHelper != NULL) {
- mouseHelper->mouseEnter(event);
+ mouseHelper->mouseEnter();
}
}
void DisplayBase::handleMouseLeave(QEvent *event)
{
if (mouseHelper != NULL) {
- mouseHelper->mouseLeave(event);
+ mouseHelper->mouseLeave();
}
}
return parent;
}
-void MouseHelper::mousePressed(QMouseEvent *event)
+void MouseHelper::mouseSync(QPoint guestPos)
{
- Q_UNUSED(event);
+ qDebug("sync");
- do_mouse_event(1, PS2_PRESS, 0, 0, 0, 0, 0);
+ /* absoluteness coordinates */
+ prevX = guestPos.x();
+ prevY = guestPos.y();
+ maru_tablet_event(INPUT_MOVE, prevX, prevY, 0, 0);
}
-void MouseHelper::mouseReleased(QMouseEvent *event)
+void MouseHelper::mousePressed()
{
- Q_UNUSED(event);
+ do_mouse_event(1, PS2_PRESS, 0, 0, 0, 0, 0);
+}
+void MouseHelper::mouseReleased()
+{
do_mouse_event(1, PS2_RELEASE, 0, 0, 0, 0, 0);
}
-void MouseHelper::mouseMoved(QMouseEvent *event,
- QPoint hostPos, QPoint guestPos)
+void MouseHelper::mouseMoved(QPoint hostPos, QPoint guestPos)
{
const int absX = guestPos.x();
const int absY = guestPos.y();
if (tv.tv_sec - lastMouseTime.tv_sec > CURSOR_RESET_TIME ||
mouseStatus != MOUSE_ENTERED)
{
- maru_tablet_event(INPUT_MOVE, absX, absY, 0, 0);
- prevX = absX;
- prevY = absY;
+ mouseSync(guestPos);
mouseStatus = MOUSE_ENTERED;
}
gettimeofday(&lastMouseTime, NULL);
prevY = qMin(resolution.height(), prevY);
prevY = qMax(0, prevY);
- /* relative positioning */
+ /* relative coordinates */
const int relX = absX - prevX;
const int relY = absY - prevY;
-
do_mouse_event(1, MOUSE_MOVE, hostPos.x(), hostPos.y(), relX, relY, 0);
prevX = absX;
prevY = absY;
}
-void MouseHelper::mouseEnter(QEvent *event)
+void MouseHelper::mouseEnter()
{
- Q_UNUSED(event);
-
if (mouseStatus == MOUSE_LEAVE) {
mouseStatus = MOUSE_ENTER;
}
}
-void MouseHelper::mouseLeave(QEvent *event)
+void MouseHelper::mouseLeave()
{
- Q_UNUSED(event);
-
mouseStatus = MOUSE_LEAVE;
}