struct wl_client *wc;
Eina_List *l;
uint32_t serial;
- E_Comp_Config *comp_conf;
E_Client *prev_ptr_ec;
ev = event;
e_comp_wl->ptr.ec = ec;
- comp_conf = e_comp_config_get();
- if (comp_conf && comp_conf->input_log_enable)
- ELOGF("Mouse", "In (obj: %p, time: %d, canvas(%d, %d) output(%d, %d), name:%20s)",
- ec, obj, ev->timestamp, ev->canvas.x, ev->canvas.y, ev->output.x, ev->output.y,
- e_client_util_name_get(ec));
+ ELOGF("Mouse", "In (obj: %p, time: %d, canvas(%d, %d) output(%d, %d), name:%20s)",
+ ec, obj, ev->timestamp, ev->canvas.x, ev->canvas.y, ev->output.x, ev->output.y,
+ e_client_util_name_get(ec));
if (_e_comp_wl_check_cursor_timer_needed(ec))
{
wl_fixed_from_int(ev->canvas.y - ec->client.y));
ec->pointer_enter_sent = EINA_TRUE;
}
- if (ev->timestamp)
wl_signal_emit(&e_comp_wl->ptr_constraints.surface_mousein_signal, ec);
- else
- ELOGF("Mouse", "In. Event doesn't have timestamp. no need to send signal", NULL);
}
static void
Eina_List *l;
uint32_t serial;
Eina_Bool inside_check;
- E_Comp_Config *comp_conf;
ev = event;
struct wl_resource *surface = e_comp_wl_client_surface_get(ec);
if (!surface) return;
- comp_conf = e_comp_config_get();
- if (comp_conf && comp_conf->input_log_enable)
- ELOGF("Mouse", "Out (obj: %p, time: %d, canvas(%d, %d) output(%d, %d), name:%20s)",
- ec, obj, ev->timestamp, ev->canvas.x, ev->canvas.y, ev->output.x, ev->output.y,
- e_client_util_name_get(ec));
+ ELOGF("Mouse", "Out (obj: %p, time: %d, canvas(%d, %d) output(%d, %d), name:%20s)",
+ ec, obj, ev->timestamp, ev->canvas.x, ev->canvas.y, ev->output.x, ev->output.y,
+ e_client_util_name_get(ec));
if (_e_comp_wl_check_cursor_timer_needed(ec))
{
wl_pointer_send_leave(res, serial, surface);
ec->pointer_enter_sent = EINA_FALSE;
}
- if (ev->timestamp)
wl_signal_emit(&e_comp_wl->ptr_constraints.surface_mouseout_signal, ec);
- else
- ELOGF("Mouse", "Out. Event doesn't have timestamp. no need to send signal", NULL);
}
static void
e_input_device_pointer_warp(NULL, x, y);
DMWRN("The pointer warped to (%d, %d) !\n", x, y);
+ if (e_comp_wl_input_pointer_constraint_activated_get())
+ {
+ // update evas' mouse position to the requested warp position
+ // This generates mouse out/in to correct client.
+ DMWRN("Pointer Constraint activated. feed_mouse_move");
+ evas_event_feed_mouse_move(e_comp->evas, x, y, 0, NULL);
+ }
+
+ if (e_comp_wl_input_pointer_constraint_activated_get())
+ {
+ // Workaround: Feed mouse out/in to make sure that mouse in to correct client.
+ // Since Mouse move event doesn't generate mouse in/out if mouse(input) is grabbed,
+ // ungrab input before warping a pointer to cursor position hint.
+ DMWRN("Pointer Constraint activated. call e_comp_ungrab_input");
+ e_comp_ungrab_input(1, 1);
+ }
+
return TIZEN_INPUT_DEVICE_MANAGER_ERROR_NONE;
}