struct wl_listener surface_unmap_listener;
struct wl_listener surface_commit_listener;
struct wl_listener surface_mousein_listener;
+ struct wl_listener surface_mouseout_listener;
};
E_API int E_EVENT_TEXT_INPUT_PANEL_VISIBILITY_CHANGE = -1;
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_list_remove(&constraint->surface_mouseout_listener.link);
wl_resource_set_user_data(constraint->resource, NULL);
pixman_region32_fini(&constraint->region);
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;
+ INF("Pointer Constraint. Mouse In ec: %p constraint: %p", ec, constraint);
break;
}
}
if (found && !constraint->active)
_e_comp_wl_input_pointer_constraints_check_enable(constraint);
- else if (!found && constraint->active)
+}
+
+static void
+_e_comp_wl_input_cb_pointer_constraints_surface_mouseout(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_mouseout_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;
+ INF("Pointer Constraint. Mouse Out ec: %p constraint: %p", ec, constraint);
+ break;
+ }
+ }
+
+ if (found && constraint->active)
_e_comp_wl_input_pointer_constraint_disable(constraint);
}
_e_comp_wl_input_cb_pointer_constraints_surface_unmapped;
constraint->surface_mousein_listener.notify =
_e_comp_wl_input_cb_pointer_constraints_surface_mousein;
+ constraint->surface_mouseout_listener.notify =
+ _e_comp_wl_input_cb_pointer_constraints_surface_mouseout;
wl_signal_add(&e_comp_wl->ptr_constraints.pointer_destroy_signal,
&constraint->pointer_destroy_listener);
&constraint->surface_commit_listener);
wl_signal_add(&e_comp_wl->ptr_constraints.surface_mousein_signal,
&constraint->surface_mousein_listener);
+ wl_signal_add(&e_comp_wl->ptr_constraints.surface_mouseout_signal,
+ &constraint->surface_mouseout_listener);
wl_list_init(&constraint->surface_unmap_listener.link);
return constraint;
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_mousein_signal);
+ wl_signal_init(&e_comp_wl->ptr_constraints.surface_mouseout_signal);
_surface_commit_hook = e_comp_wl_hook_add(E_COMP_WL_HOOK_CLIENT_SURFACE_COMMIT,
_e_comp_wl_input_cb_surface_commit,