ui: stop the window moving when context menu is opened
authorGiWoong Kim <giwoong.kim@samsung.com>
Thu, 30 Jul 2015 06:05:02 +0000 (15:05 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Fri, 31 Jul 2015 08:22:08 +0000 (17:22 +0900)
Change-Id: Id8c157fe12621e7db9b3f571bf4fdb87c9a12ebc
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/ui/menu/contextmenu.cpp
tizen/src/ui/skinview.cpp
tizen/src/ui/skinview.h

index 0bc1b29eb0106b7b3fd3b1f507b001f2ae37325e..6b9e4110abef2f709209767a24288eb8b3043725 100644 (file)
@@ -440,18 +440,24 @@ QAction *ContextMenu::addGeneralAction(QMenu *menu,
     return action;
 }
 
+/* override */
 bool ContextMenu::eventFilter(QObject *obj, QEvent *event)
 {
     ContextMenu *menu = dynamic_cast<ContextMenu *>(obj);
 
-    if (menu != NULL &&
-        (event->type() == QEvent::MouseButtonPress ||
-            event->type() == QEvent::MouseButtonRelease)) {
-        QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent *>(event);
+    if (menu != NULL) {
+        if (event->type() == QEvent::MouseButtonPress ||
+            event->type() == QEvent::MouseButtonRelease) {
+            QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent *>(event);
 
-        if (mouseEvent != NULL && mouseEvent->button() == Qt::RightButton) {
-            mouseEvent->ignore(); /* filtering */
-            return true;
+            if (mouseEvent != NULL && mouseEvent->button() == Qt::RightButton) {
+                mouseEvent->ignore(); /* filtering */
+                return true;
+            }
+        } else if (event->type() == QEvent::Show) {
+            if (parent->getSkinView()->isGrabWindow() == true) {
+                parent->getSkinView()->releaseWindow();
+            }
         }
     }
 
index cbd3a83752db24a55dfd1f2224fd01032fd81c19..92152e2952d6a489b58cdb853cc72479935b1178 100644 (file)
@@ -74,6 +74,22 @@ KeyboardHelper *SkinView::getKbdHelper()
     return kbdHelper;
 }
 
+bool SkinView::isGrabWindow()
+{
+    return (grabPos != QPoint(-1, -1));
+}
+
+void SkinView::grabWindow(QPoint globalPos)
+{
+    grabWinPos = parentWidget()->pos();
+    grabPos = globalPos;
+}
+
+void SkinView::releaseWindow()
+{
+    grabPos = QPoint(-1, -1);
+}
+
 void SkinView::updateLayout()
 {
     qDebug("update skin view layout");
@@ -103,11 +119,8 @@ void SkinView::resizeEvent(QResizeEvent *event)
 /* override */
 void SkinView::mousePressEvent(QMouseEvent *event)
 {
-    //qDebug("pressed %dx%d", event->x(), event->y());
-
     if (event->button() == Qt::LeftButton) {
-        grabWinPos = parentWidget()->pos();
-        grabPos = event->globalPos();
+        grabWindow(event->globalPos());
     }
 
     QGraphicsView::mousePressEvent(event);
@@ -116,10 +129,8 @@ void SkinView::mousePressEvent(QMouseEvent *event)
 /* override */
 void SkinView::mouseReleaseEvent(QMouseEvent *event)
 {
-    //qDebug("released %dx%d", event->x(), event->y());
-
     if (event->button() == Qt::LeftButton) {
-        grabPos = QPoint(-1, -1);
+        releaseWindow();
     }
 
     QGraphicsView::mouseReleaseEvent(event);
@@ -128,7 +139,7 @@ void SkinView::mouseReleaseEvent(QMouseEvent *event)
 /* override */
 void SkinView::mouseMoveEvent(QMouseEvent *event)
 {
-    if (grabPos != QPoint(-1, -1)) {
+    if (isGrabWindow() == true) {
         win->move(grabWinPos + (event->globalPos() - grabPos));
     }
 
index 7d9387dc06acb72bfb525b5278a57189d246565f..0c4575becb5e20cbc2358403f78f7ae8a82a210b 100644 (file)
@@ -44,6 +44,9 @@ public:
     ~SkinView();
 
     KeyboardHelper *getKbdHelper();
+    bool isGrabWindow();
+    void grabWindow(QPoint globalPos);
+    void releaseWindow();
     void updateLayout();
 
 protected: