static void _e_client_transient_for_group_make(E_Client *ec, Eina_List **list);
static Evas_Object *_e_client_resize_object_create(E_Client *ec);
static void _e_client_resize_object_del(E_Client *ec);
+static void _e_client_input_thread_eo_geometry_set(void *data);
static Eina_Inlist *_e_client_hooks[] =
{
{
E_Client *ec = data;
E_Map *map;
- Evas_Coord x, y;
+ Evas_Coord x, y, w, h;
+ Eina_Bool update = EINA_FALSE;
if (e_object_is_del(data)) return;
_e_client_event_simple(ec, E_EVENT_CLIENT_MOVE);
- e_view_position_get(e_view_client_view_get(PRI(ec)->view_client), &x, &y);
+ e_view_client_geometry_get(PRI(ec)->view_client, &x, &y, &w, &h);
if ((e_config->transient.move) && (ec->transients))
{
Eina_List *list = eina_list_clone(ec->transients);
wl_signal_emit(&PRI(ec)->events.move, NULL);
e_comp_visibility_calculation_set(EINA_TRUE);
+
+ update = (!ec->is_cursor) && (w != 0) && (h != 0);
+
+ if (update && e_input_thread_check_client_cloning_needed())
+ {
+ E_Input_Thread_Request_EClient_Data ec_data;
+ memset(&ec_data, 0, sizeof(E_Input_Thread_Request_EClient_Data));
+ ec_data.ec = ec;
+ ec_data.eo_geometry.x = x;
+ ec_data.eo_geometry.y = y;
+ ec_data.eo_geometry.w = w;
+ ec_data.eo_geometry.h = h;
+
+ ICINF("[%s] ec(%p), eo.x(%d), eo.y(%d), eo.w(%d), eo.h(%d)\n", __func__, ec, x, y, w, h);
+
+ e_input_backend_thread_safe_call(_e_client_input_thread_eo_geometry_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ }
}
static void