e_client: make fake mouse-out upon focus-out conditional 04/197404/1 submit/tizen_5.0/20190111.061602
authorjeon <jhyuni.kang@samsung.com>
Wed, 9 Jan 2019 05:26:11 +0000 (14:26 +0900)
committerJeongHyun Kang <jhyuni.kang@samsung.com>
Fri, 11 Jan 2019 05:01:36 +0000 (05:01 +0000)
  - cursor is not changed correctly on wayland
    when a window lost focus while the cursor remained
    inside the window.
  - so patch this fake mouse-out condition refer to opensource

Change-Id: Iac21c482c4c4a274aa8748c390f6031efc1c7510
(cherry picked from commit 017b9e0d7fff6d5d7d3d455c8e31f2820f0bf715)

src/bin/e_client.c
src/bin/e_client.h

index 176f71fb94fe7f6d568b16099bb700649415019f..795437ef4c1ff19af715f1dc2021d0c328231bf1 100644 (file)
@@ -5026,7 +5026,8 @@ e_client_focused_set(E_Client *ec)
         ec_unfocus->want_focus = ec_unfocus->focused = 0;
         if (!e_object_is_del(E_OBJECT(ec_unfocus)))
           e_focus_event_focus_out(ec_unfocus);
-        if (ec_unfocus->mouse.in)
+        if (ec_unfocus->mouse.in && ec && (!e_client_util_is_popup(ec)) &&
+            (e_config->focus_policy != E_FOCUS_CLICK))
           e_client_mouse_out(ec_unfocus, ec_unfocus->x - 1, ec_unfocus->y - 1);
 
         /* if there unfocus client is fullscreen and visible */
index 5b24ad0fcb3a11c73a67baf099b762671e174135..19612275ec6d9203cc5ad59d77d9031282130496 100644 (file)
@@ -1298,4 +1298,25 @@ e_client_util_name_get(const E_Client *ec)
      return ec->icccm.title;
    return NULL;
 }
+
+static inline Eina_Bool
+e_client_util_is_popup(const E_Client *ec)
+{
+   if (!ec) return EINA_FALSE;
+   switch (ec->netwm.type)
+     {
+        case E_WINDOW_TYPE_MENU:
+        case E_WINDOW_TYPE_SPLASH:
+        case E_WINDOW_TYPE_DROPDOWN_MENU:
+        case E_WINDOW_TYPE_POPUP_MENU:
+        case E_WINDOW_TYPE_TOOLTIP:
+        case E_WINDOW_TYPE_NOTIFICATION:
+        case E_WINDOW_TYPE_COMBO:
+        case E_WINDOW_TYPE_DND:
+          return EINA_TRUE;
+        default: break;
+     }
+  return EINA_FALSE;
+}
+
 #endif