static void
_kvm_hook_drag_start(void *d EINA_UNUSED, E_Drag *drag)
{
- E_Comp_Wl_Data_Source *source;
- E_Comp_Wl_Data *comp_wl;
E_Service_Kvm *esk;
Eina_Iterator *it;
- struct wl_client *source_client, *kvm_client;
if (!drag) return;
if (!_kvm_service_hash) return;
- comp_wl = e_comp_wl_get();
it = eina_hash_iterator_data_new(_kvm_service_hash);
EINA_ITERATOR_FOREACH(it, esk)
{
- // Workaround: Feed mouse out/in to make sure that the mouse in to correct client.
- // The event mouse in/out is not emit during dragging(mouse move with mouse button pressed).
- // It makes the pointer still locked after mouse out from kvm window When the drag started.
- source = comp_wl->drag_source;
- source_client = wl_resource_get_client(source->resource);
- kvm_client = wl_resource_get_client(esk->srv_kvm_res);
- if (source_client == kvm_client)
- {
- e_comp_ungrab_input(1, 1);
- }
-
e_service_kvm_send_source_mimetypes(esk);
e_service_kvm_send_drag_start(esk);
}