mouse: synchronize mouse position between guest and host after moving
authorGiWoong Kim <giwoong.kim@samsung.com>
Mon, 25 Jan 2016 11:46:46 +0000 (20:46 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Wed, 27 Jan 2016 07:36:42 +0000 (16:36 +0900)
Change-Id: Ia42b64d1a89f678e9b21ed37c31a2da922c10a8f
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/ui/displaybase.cpp
tizen/src/ui/input/mousehelper.cpp
tizen/src/ui/input/mousehelper.h

index e57f6633cb14f9d73fd53a95078475a70d73f6fc..6db630a0c6b1c1fdb54cbba47e01eb0fc0e9f082 100644 (file)
@@ -283,7 +283,7 @@ void DisplayBase::handleMousePress(QMouseEvent *event)
             tsHelper->mousePressed(event, getGuestPos(event->pos()));
         }
         if (mouseHelper != NULL) {
-            mouseHelper->mousePressed(event);
+            mouseHelper->mousePressed();
         }
     }
 }
@@ -295,6 +295,10 @@ void DisplayBase::handleMouseRelease(QMouseEvent *event)
         releaseWindow();
 
         win->turnOffMovingMode();
+
+        if (mouseHelper != NULL) {
+            mouseHelper->mouseSync(getGuestPos(event->pos()));
+        }
         return;
     }
 
@@ -307,7 +311,7 @@ void DisplayBase::handleMouseRelease(QMouseEvent *event)
             tsHelper->mouseReleased(event, getGuestPos(event->pos()));
         }
         if (mouseHelper != NULL) {
-            mouseHelper->mouseReleased(event);
+            mouseHelper->mouseReleased();
         }
     }
 }
@@ -369,12 +373,12 @@ void DisplayBase::handleMouseMove(QMouseEvent *event)
                 qDebug("drag out: auto release");
 
                 isDragging = false;
-                mouseHelper->mouseReleased(event);
+                mouseHelper->mouseReleased();
                 return;
             }
         }
 
-        mouseHelper->mouseMoved(event,
+        mouseHelper->mouseMoved(
             event->pos(), getGuestPos(event->pos()));
     }
 }
@@ -383,7 +387,7 @@ void DisplayBase::handleMouseMove(QMouseEvent *event)
 void DisplayBase::handleMouseEnter(QEvent *event)
 {
     if (mouseHelper != NULL) {
-        mouseHelper->mouseEnter(event);
+        mouseHelper->mouseEnter();
     }
 }
 
@@ -391,7 +395,7 @@ void DisplayBase::handleMouseEnter(QEvent *event)
 void DisplayBase::handleMouseLeave(QEvent *event)
 {
     if (mouseHelper != NULL) {
-        mouseHelper->mouseLeave(event);
+        mouseHelper->mouseLeave();
     }
 }
 
index 297fbd754c0b8ffc198998e844a76c4542aa0c1b..61a22f90ad639c851a6de9b1e2e2c6ab9db54726 100644 (file)
@@ -58,22 +58,27 @@ void *MouseHelper::getParent()
     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();
@@ -86,9 +91,7 @@ void MouseHelper::mouseMoved(QMouseEvent *event,
     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);
@@ -98,29 +101,24 @@ void MouseHelper::mouseMoved(QMouseEvent *event,
     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;
 }
 
index 3bcb12729dde056160eb5addd3e902dcf3447d67..48bc3b99369e8a63348a5fe8ecbeda91708894c0 100644 (file)
@@ -59,12 +59,13 @@ public:
 
     void *getParent();
 
-    void mousePressed(QMouseEvent *event);
-    void mouseReleased(QMouseEvent *event);
-    void mouseMoved(QMouseEvent *event, QPoint hostPos, QPoint guestPos);
+    void mouseSync(QPoint guestPos);
+    void mousePressed();
+    void mouseReleased();
+    void mouseMoved(QPoint hostPos, QPoint guestPos);
 
-    void mouseEnter(QEvent *event);
-    void mouseLeave(QEvent *event);
+    void mouseEnter();
+    void mouseLeave();
 
 private:
     void *parent;