return NULL;
}
+
+EINTERN void
+e_comp_ungrab_input_without_inout(Eina_Bool mouse, Eina_Bool kbd)
+{
+ Ecore_Window mwin = 0, kwin = 0;
+
+ mouse = !!mouse;
+ kbd = !!kbd;
+ if (e_comp->input_mouse_grabs)
+ e_comp->input_mouse_grabs -= mouse;
+
+ if (e_comp->input_key_grabs)
+ e_comp->input_key_grabs -= kbd;
+
+ if (mouse && (!e_comp->input_mouse_grabs))
+ mwin = e_comp->ee_win;
+
+ if (kbd && (!e_comp->input_key_grabs))
+ kwin = e_comp->ee_win;
+
+ //e_comp_override_timed_pop(); //nocomp condition
+ if ((!mwin) && (!kwin)) return;
+ e_grabinput_release(mwin, kwin);
+ if (e_client_focused_get()) return;
+
+ E_Zone *zone = e_zone_current_get();
+ if (!zone) return;
+
+ e_zone_focus_reset(zone);
+}
EINTERN void e_comp_visibility_calculation_set(Eina_Bool set);
EINTERN Eina_Bool e_comp_visibility_calculation_get(void);
EINTERN E_Client *e_comp_focused_ec_get(void);
+EINTERN void e_comp_ungrab_input_without_inout(Eina_Bool mouse, Eina_Bool kbd);
#endif
#endif
if (drag->input_grab)
{
- e_comp_ungrab_input(1, 1);
+ if ((type == E_DND_DRAG_TYPE_CANCELLED_BY_KVM) &&
+ (e_comp_wl_input_pointer_constraint_activated_get()))
+ {
+ ELOGF("DnD", "Pointer Constraint activated. call e_comp_ungrab_input_without_inout", NULL);
+ e_comp_ungrab_input_without_inout(1, 1);
+ }
+ else
+ {
+ e_comp_ungrab_input(1, 1);
+ }
drag->input_grab = EINA_FALSE;
}
{
E_DND_DRAG_TYPE_DROPPED,
E_DND_DRAG_TYPE_CANCELLED,
+ E_DND_DRAG_TYPE_CANCELLED_BY_KVM,
} E_Dnd_Drop_Type;
typedef void (*E_Drag_Hook_Cb)(void *data, E_Drag *drag);
ELOGF("KVM", "Cancel drag by kvm_service request! service:%p", ec, esk);
- e_drag_end(e_comp_wl->drag, E_DND_DRAG_TYPE_CANCELLED);
+ e_drag_end(e_comp_wl->drag, E_DND_DRAG_TYPE_CANCELLED_BY_KVM);
return EINA_TRUE;
}