From: Sungjin Park Date: Fri, 28 Apr 2023 03:15:50 +0000 (+0900) Subject: e_comp_wl & e_comp_wl_input: fixed pointer constraints logic using mouse in cb instea... X-Git-Tag: accepted/tizen/7.0/unified/20230502.051241^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a888bea69b57b602a455a7658059b4ecf6840038;p=platform%2Fupstream%2Fenlightenment.git e_comp_wl & e_comp_wl_input: fixed pointer constraints logic using mouse in cb instead of focus cb Change-Id: I128f39e302b920e85bb7ab17953a9e359973dc7a Signed-off-by: Sungjin Park --- diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 85422ba11a..edc4d574b8 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -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 diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index e4620ed707..7ff67b5b69 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -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; diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c index 96f84d4f3b..3debc4e6e3 100644 --- a/src/bin/e_comp_wl_input.c +++ b/src/bin/e_comp_wl_input.c @@ -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,