e_comp_wl & e_comp_wl_input: fixed pointer constraints logic using mouse in cb instea... 52/292152/1 accepted/tizen/7.0/unified/20230502.051241
authorSungjin Park <sj76.park@samsung.com>
Fri, 28 Apr 2023 03:15:50 +0000 (12:15 +0900)
committerSungjin Park <sj76.park@samsung.com>
Fri, 28 Apr 2023 03:16:03 +0000 (12:16 +0900)
Change-Id: I128f39e302b920e85bb7ab17953a9e359973dc7a
Signed-off-by: Sungjin Park <sj76.park@samsung.com>
src/bin/e_comp_wl.c
src/bin/e_comp_wl.h
src/bin/e_comp_wl_input.c

index 85422ba11a338a9ddb9f6e8deea348698d141b38..edc4d574b87f9a896c1851bb371cb932cfa5e8d6 100644 (file)
@@ -1133,6 +1133,8 @@ _e_comp_wl_evas_cb_mouse_in(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj
                               wl_fixed_from_int(ev->canvas.y - ec->client.y));
         ec->pointer_enter_sent = EINA_TRUE;
      }
+
+   wl_signal_emit(&e_comp_wl->ptr_constraints.surface_mousein_signal, ec);
 }
 
 static void
@@ -3928,7 +3930,6 @@ _e_comp_wl_client_cb_focus_set(void *data EINA_UNUSED, E_Client *ec)
      }
 
    e_comp_wl->kbd.focus = ec->comp_data->surface;
-   wl_signal_emit(&e_comp_wl->ptr_constraints.surface_focus_signal, ec);
 }
 
 static void
index e4620ed707f17b7927e266bb6bbd2b9c617a01d9..7ff67b5b694cfee44796c60461df71eab71da657 100644 (file)
@@ -254,7 +254,7 @@ struct _E_Comp_Wl_Data
         struct wl_signal pointer_destroy_signal;
         struct wl_signal surface_unmap_signal;
         struct wl_signal surface_commit_signal;
-        struct wl_signal surface_focus_signal;
+        struct wl_signal surface_mousein_signal;
         struct wl_global *global;
      } ptr_constraints;
 
index 96f84d4f3bb5a009d64e5103b46c0148a635b7e3..3debc4e6e39cbdc9a68dff265aba0c7e1a1eb1cf 100644 (file)
@@ -43,7 +43,7 @@ struct _E_Comp_Wl_Pointer_Constraint
    struct wl_listener pointer_destroy_listener;
    struct wl_listener surface_unmap_listener;
    struct wl_listener surface_commit_listener;
-   struct wl_listener surface_focus_listener;
+   struct wl_listener surface_mousein_listener;
 };
 
 E_API int E_EVENT_TEXT_INPUT_PANEL_VISIBILITY_CHANGE = -1;
@@ -608,9 +608,9 @@ _e_comp_wl_input_pointer_constraint_destroy(E_Comp_Wl_Pointer_Constraint *constr
      _e_comp_wl_input_pointer_constraint_deactivate(constraint);
 
    wl_list_remove(&constraint->pointer_destroy_listener.link);
-   wl_list_remove(&constraint->surface_focus_listener.link);
    wl_list_remove(&constraint->surface_unmap_listener.link);
    wl_list_remove(&constraint->surface_commit_listener.link);
+   wl_list_remove(&constraint->surface_mousein_listener.link);
 
    wl_resource_set_user_data(constraint->resource, NULL);
    pixman_region32_fini(&constraint->region);
@@ -735,32 +735,6 @@ _e_comp_wl_input_cb_pointer_constraints_pointer_destroyed(struct wl_listener *li
      _e_comp_wl_input_pointer_constraint_destroy(constraint);
 }
 
-static void
-_e_comp_wl_input_cb_pointer_constraints_surface_focused(struct wl_listener *listener,
-                                                        void *data)
-{
-   E_Client *ec = (E_Client *)data;
-   E_Comp_Wl_Pointer_Constraint *constraint = container_of(listener,
-                                              E_Comp_Wl_Pointer_Constraint,
-                                              surface_focus_listener);
-
-   Eina_Bool found = EINA_FALSE;
-   E_Comp_Wl_Pointer_Constraint *tmp_constraint;
-   wl_list_for_each(tmp_constraint, &ec->comp_data->pointer_constraints, link)
-     {
-        if (tmp_constraint == constraint)
-          {
-             found = EINA_TRUE;
-             break;
-          }
-     }
-
-   if (found && !constraint->active)
-     _e_comp_wl_input_pointer_constraints_check_enable(constraint);
-   else if (!found && constraint->active)
-     _e_comp_wl_input_pointer_constraint_disable(constraint);
-}
-
 static void
 _e_comp_wl_input_cb_pointer_constraints_surface_committed(struct wl_listener *listener,
                                                           void *data)
@@ -792,6 +766,32 @@ _e_comp_wl_input_cb_pointer_constraints_surface_committed(struct wl_listener *li
    //CHECKME: check if the updated region can take effect on the given constraint
 }
 
+static void
+_e_comp_wl_input_cb_pointer_constraints_surface_mousein(struct wl_listener *listener,
+                                                        void *data)
+{
+   E_Client *ec = (E_Client *)data;
+   E_Comp_Wl_Pointer_Constraint *constraint = container_of(listener,
+                                              E_Comp_Wl_Pointer_Constraint,
+                                              surface_mousein_listener);
+
+   Eina_Bool found = EINA_FALSE;
+   E_Comp_Wl_Pointer_Constraint *tmp_constraint;
+   wl_list_for_each(tmp_constraint, &ec->comp_data->pointer_constraints, link)
+     {
+        if (tmp_constraint == constraint)
+          {
+             found = EINA_TRUE;
+             break;
+          }
+     }
+
+   if (found && !constraint->active)
+     _e_comp_wl_input_pointer_constraints_check_enable(constraint);
+   else if (!found && constraint->active)
+     _e_comp_wl_input_pointer_constraint_disable(constraint);
+}
+
 static void
 _e_comp_wl_input_cb_pointer_constraints_surface_unmapped(struct wl_listener *listener,
                                                          void *data)
@@ -870,17 +870,17 @@ _e_comp_wl_input_pointer_constraint_create(E_Client *ec,
      _e_comp_wl_input_cb_pointer_constraints_pointer_destroyed;
    constraint->surface_commit_listener.notify =
      _e_comp_wl_input_cb_pointer_constraints_surface_committed;
-   constraint->surface_focus_listener.notify =
-     _e_comp_wl_input_cb_pointer_constraints_surface_focused;
    constraint->surface_unmap_listener.notify =
      _e_comp_wl_input_cb_pointer_constraints_surface_unmapped;
+   constraint->surface_mousein_listener.notify =
+     _e_comp_wl_input_cb_pointer_constraints_surface_mousein;
 
    wl_signal_add(&e_comp_wl->ptr_constraints.pointer_destroy_signal,
                  &constraint->pointer_destroy_listener);
    wl_signal_add(&e_comp_wl->ptr_constraints.surface_commit_signal,
                  &constraint->surface_commit_listener);
-   wl_signal_add(&e_comp_wl->ptr_constraints.surface_focus_signal,
-                 &constraint->surface_focus_listener);
+   wl_signal_add(&e_comp_wl->ptr_constraints.surface_mousein_signal,
+                 &constraint->surface_mousein_listener);
 
    return constraint;
 }
@@ -1376,7 +1376,7 @@ e_comp_wl_input_init(void)
    wl_signal_init(&e_comp_wl->ptr_constraints.pointer_destroy_signal);
    wl_signal_init(&e_comp_wl->ptr_constraints.surface_unmap_signal);
    wl_signal_init(&e_comp_wl->ptr_constraints.surface_commit_signal);
-   wl_signal_init(&e_comp_wl->ptr_constraints.surface_focus_signal);
+   wl_signal_init(&e_comp_wl->ptr_constraints.surface_mousein_signal);
 
    _surface_commit_hook = e_comp_wl_hook_add(E_COMP_WL_HOOK_CLIENT_SURFACE_COMMIT,
                                              _e_comp_wl_input_cb_surface_commit,