{
case 1:
efl_ui_position_manager_data_access_v1_data_access_set(pd->pos_man,
+ efl_provider_find(obj, EFL_UI_WIN_CLASS),
&pd->obj_accessor, _obj_accessor_get_at, NULL,
&pd->size_accessor, _size_accessor_get_at, NULL,
eina_list_count(pd->items));
{
case 1:
efl_ui_position_manager_data_access_v1_data_access_set(pd->manager,
+ efl_provider_find(obj, EFL_UI_WIN_CLASS),
efl_ref(obj), _batch_entity_cb, _unref_cb,
efl_ref(obj), _batch_size_cb, _unref_cb,
count);
{
case 1:
efl_ui_position_manager_data_access_v1_data_access_set(pd->manager,
+ efl_provider_find(data, EFL_UI_WIN_CLASS),
efl_ref(data), _batch_entity_cb, _unref_cb,
efl_ref(data), _batch_size_cb, _unref_cb,
count);
set {
}
values {
+ canvas: Efl.Ui.Win; [[Will use this object to freeze/thaw canvas events.]]
obj_access : Efl.Ui.Position_Manager.Object_Batch_Callback; [[Function callback for canvas objects, even if
the start_id is valid, the returned objects
may be $NULL.]]
Eina_Bool size_cache_dirty;
Eo *last_group;
Eina_Future *rebuild_absolut_size;
+ Efl_Ui_Win *window;
+ Evas *canvas;
Api_Callbacks callbacks;
} Efl_Ui_Position_Manager_Grid_Data;
}
EOLIAN static void
-_efl_ui_position_manager_grid_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
+_efl_ui_position_manager_grid_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd, Efl_Ui_Win *canvas, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
{
// Cleanup cache first
_group_cache_invalidate(obj, pd);
pd->callbacks.size.free_cb(pd->callbacks.size.data);
// Set them
+ efl_replace(&pd->window, canvas);
+ efl_replace(&pd->canvas, canvas ? evas_object_evas_get(canvas) : NULL);
+
pd->callbacks.object.data = obj_access_data;
pd->callbacks.object.access = obj_access;
pd->callbacks.object.free_cb = obj_access_free_cb;
_efl_ui_position_manager_grid_efl_object_invalidate(Eo *obj,
Efl_Ui_Position_Manager_Grid_Data *pd EINA_UNUSED)
{
- efl_ui_position_manager_data_access_v1_data_access_set(obj, NULL, NULL, NULL, NULL, NULL, NULL, 0);
+ efl_ui_position_manager_data_access_v1_data_access_set(obj, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0);
efl_invalidate(efl_super(obj, EFL_UI_POSITION_MANAGER_GRID_CLASS));
}
int maximum_min_size;
Vis_Segment prev_run;
Efl_Gfx_Entity *last_group;
+ Efl_Ui_Win *window;
+ Evas *canvas;
Api_Callbacks callbacks;
} Efl_Ui_Position_Manager_List_Data;
else
geom.x -= (relevant_space_size - cache_access(obj, pd, new.start_id));
+ evas_event_freeze(pd->canvas);
+
for (i = new.start_id; i < new.end_id; ++i)
{
Eina_Size2D size;
efl_gfx_entity_position_set(first_group, first_group_pos);
efl_gfx_entity_size_set(first_group, first_group_size);
+
+ evas_event_thaw(pd->canvas);
+ evas_event_thaw_eval(pd->canvas);
}
if (pd->rebuild_absolut_size)
eina_future_cancel(pd->rebuild_absolut_size);
- efl_ui_position_manager_data_access_v1_data_access_set(obj, NULL, NULL, NULL, NULL, NULL, NULL, 0);
+ efl_ui_position_manager_data_access_v1_data_access_set(obj, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0);
efl_invalidate(efl_super(obj, MY_CLASS));
}
}
EOLIAN static void
-_efl_ui_position_manager_list_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
+_efl_ui_position_manager_list_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd, Efl_Ui_Win *canvas, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
{
// Cleanup cache first
cache_invalidate(obj, pd);
pd->callbacks.size.free_cb(pd->callbacks.size.data);
// Set them
+ efl_replace(&pd->window, canvas);
+ efl_replace(&pd->canvas, canvas ? evas_object_evas_get(canvas) : NULL);
+
pd->callbacks.object.data = obj_access_data;
pd->callbacks.object.access = obj_access;
pd->callbacks.object.free_cb = obj_access_free_cb;
int maximum_min_size;
Vis_Segment prev_run;
Efl_Gfx_Entity *last_group;
+ Efl_Ui_Win *window;
+ Evas *canvas;
Api_Callbacks callbacks;
} Efl_Wearable_Position_Manager_Circle_List_Data;
else
geom.x -= (relevant_space_size - cache_access(obj, pd, new.start_id));
+ evas_event_freeze(pd->canvas);
+
for (i = new.start_id; i < new.end_id; ++i)
{
Eina_Size2D size;
efl_gfx_entity_position_set(first_group, first_group_pos);
efl_gfx_entity_size_set(first_group, first_group_size);
+
+ evas_event_thaw(pd->canvas);
+ evas_event_thaw_eval(pd->canvas);
}
if (pd->rebuild_absolut_size)
eina_future_cancel(pd->rebuild_absolut_size);
- efl_ui_position_manager_data_access_v1_data_access_set(obj, NULL, NULL, NULL, NULL, NULL, NULL, 0);
+ efl_ui_position_manager_data_access_v1_data_access_set(obj, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0);
efl_invalidate(efl_super(obj, MY_CLASS));
}
}
EOLIAN static void
-_efl_wearable_position_manager_circle_list_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Wearable_Position_Manager_Circle_List_Data *pd, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
+_efl_wearable_position_manager_circle_list_efl_ui_position_manager_data_access_v1_data_access_set(Eo *obj, Efl_Wearable_Position_Manager_Circle_List_Data *pd, Efl_Ui_Win *canvas, void *obj_access_data, Efl_Ui_Position_Manager_Object_Batch_Callback obj_access, Eina_Free_Cb obj_access_free_cb, void *size_access_data, Efl_Ui_Position_Manager_Size_Batch_Callback size_access, Eina_Free_Cb size_access_free_cb, int size)
{
// Cleanup cache first
cache_invalidate(obj, pd);
pd->callbacks.size.free_cb(pd->callbacks.size.data);
// Set them
+ efl_replace(&pd->window, canvas);
+ efl_replace(&pd->canvas, canvas ? evas_object_evas_get(canvas) : NULL);
+
pd->callbacks.object.data = obj_access_data;
pd->callbacks.object.access = obj_access;
pd->callbacks.object.free_cb = obj_access_free_cb;
arr_size = eina_inarray_new(sizeof(Eina_Size2D), 10);
efl_ui_position_manager_data_access_v1_data_access_set(position_manager,
+ win,
NULL, _obj_accessor_get_at, NULL,
NULL, _size_accessor_get_at, NULL,
0);