DSTouch: add resetFocus(), fix setFocus() 71/241871/1
authorSung-Jin Park <sj76.park@samsung.com>
Thu, 20 Aug 2020 06:05:01 +0000 (15:05 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Thu, 20 Aug 2020 10:12:28 +0000 (19:12 +0900)
Change-Id: Ie5885f765c44fc88bfbb2d781810729ed2696aa6
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/DSSeat/DSTouch.cpp
src/DSSeat/DSTouch.h

index 00f8abc..c636dd7 100644 (file)
@@ -108,6 +108,9 @@ void DSTouch::setFocus(std::shared_ptr<DSWindow> window)
        if (!window)
        {
                DSLOG_ERR("DSTouch", "Given window is INVALID. (window : %p)", window);
+               __touchFocus = window;
+               if (__dswlTouch)
+                       __dswlTouch->setFocus(nullptr);
                return;
        }
 
@@ -131,6 +134,18 @@ void DSTouch::setFocus(std::shared_ptr<DSWindow> window)
        __dswlTouch->setFocus(waylandSurface);
 }
 
+void DSTouch::resetFocus()
+{
+       if (__touchFocus)
+       {
+               __touchFocus = nullptr;
+               DSLOG_INF("DSTouch", "touchFocus has been reset.");
+       }
+
+       if (__dswlTouch)
+               __dswlTouch->resetFocus();
+}
+
 std::shared_ptr<DSWindow> DSTouch::getFocus()
 {
        return __touchFocus;
index 99c8d7a..ef164d9 100644 (file)
@@ -49,6 +49,7 @@ public:
        void touchUp(int32_t id);
        void touchMove(int32_t id, int x, int y);
        void setFocus(std::shared_ptr<DSWindow> window);
+       void resetFocus();
        std::shared_ptr<DSWindow> getFocus();
 
 private: