elementary: make Efl.Ui.Position_Manager a namespace.

This does the following rename as per T8058:
Efl.Ui.Item_Position_Manager -> Efl.Ui.Position_Manager.Entity
Efl.Ui.Grid_Position_Manager -> Efl.Ui.Position_Manager.Grid
Efl.Ui.List_Position_Manager -> Efl.Ui.Position_Manager.List

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9388
This commit is contained in:
Cedric BAIL 2019-07-24 11:51:54 -07:00 committed by Marcel Hollerbach
parent 59d684284b
commit 9419be9baf
19 changed files with 130 additions and 130 deletions

View File

@ -71,7 +71,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
efl_ui_win_autodel_set(efl_added, EINA_TRUE)
);
list = efl_new(EFL_UI_LIST_POSITION_MANAGER_CLASS);
list = efl_new(EFL_UI_POSITION_MANAGER_LIST_CLASS);
item_container = efl_add(EFL_UI_ITEM_CONTAINER_CLASS, win,
efl_ui_item_container_position_manager_set(efl_added, list));
efl_content_set(win, item_container);

View File

@ -148,7 +148,7 @@ _select_value_cb(void *data, const Efl_Event *ev)
efl_ui_select_mode_set(c, efl_ui_radio_group_selected_value_get(ev->object));
}
void create_item_container_ui(Efl_Ui_Item_Position_Manager *manager, const Efl_Class *item, const char *name)
void create_item_container_ui(Efl_Ui_Position_Manager_Entity *manager, const Efl_Class *item, const char *name)
{
Efl_Ui_Win *win, *o, *tbl, *item_container, *bx;
Match_Content_Ctx *ctx = calloc(1, sizeof(*ctx));
@ -261,12 +261,12 @@ void test_efl_ui_item_container_grid(void *data EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
create_item_container_ui(efl_new(EFL_UI_GRID_POSITION_MANAGER_CLASS), EFL_UI_GRID_DEFAULT_ITEM_CLASS, "Efl.Ui.Item_Container Grid");
create_item_container_ui(efl_new(EFL_UI_POSITION_MANAGER_GRID_CLASS), EFL_UI_GRID_DEFAULT_ITEM_CLASS, "Efl.Ui.Item_Container Grid");
}
void test_efl_ui_item_container_list(void *data EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
create_item_container_ui(efl_new(EFL_UI_LIST_POSITION_MANAGER_CLASS), EFL_UI_LIST_DEFAULT_ITEM_CLASS, "Efl.Ui.Item_Container List");
create_item_container_ui(efl_new(EFL_UI_POSITION_MANAGER_LIST_CLASS), EFL_UI_LIST_DEFAULT_ITEM_CLASS, "Efl.Ui.Item_Container List");
}

View File

@ -251,10 +251,10 @@ typedef Eo Efl_Ui_Spotlight_Indicator;
# include <efl_ui_spin_button.eo.h>
# include <efl_ui_slider.eo.h>
# include <efl_ui_item.eo.h>
# include <efl_ui_item_position_manager.eo.h>
# include <efl_ui_position_manager_entity.eo.h>
# include <efl_ui_item_container.eo.h>
# include <efl_ui_list_position_manager.eo.h>
# include <efl_ui_grid_position_manager.eo.h>
# include <efl_ui_position_manager_list.eo.h>
# include <efl_ui_position_manager_grid.eo.h>
# include <efl_ui_list_item.eo.h>
# include <efl_ui_list_default_item.eo.h>
# include <efl_ui_grid_item.eo.h>

View File

@ -1,17 +0,0 @@
class @beta Efl.Ui.Grid_Position_Manager extends Efl.Object implements Efl.Ui.Item_Position_Manager
{
[[Implementation of @Efl.Ui.Item_Position_Manager for two-dimensional grids.
Every item in the grid has the same size, which is the biggest minimum size of all items.
]]
implements {
Efl.Ui.Item_Position_Manager.data_access {set;}
Efl.Ui.Item_Position_Manager.viewport {set;}
Efl.Ui.Item_Position_Manager.scroll_position {set;}
Efl.Ui.Item_Position_Manager.item_added;
Efl.Ui.Item_Position_Manager.item_removed;
Efl.Ui.Item_Position_Manager.position_single_item;
Efl.Ui.Item_Position_Manager.item_size_changed;
Efl.Ui.Layout_Orientable.orientation {set; get;}
}
}

View File

@ -25,7 +25,7 @@ typedef struct {
Efl_Ui_Select_Mode mode;
Efl_Ui_Layout_Orientation dir;
Eina_Size2D content_min_size;
Efl_Ui_Item_Position_Manager *pos_man;
Efl_Ui_Position_Manager_Entity *pos_man;
struct {
Eina_Accessor pass_on;
unsigned int last_index;
@ -217,7 +217,7 @@ _pan_viewport_changed_cb(void *data, const Efl_Event *ev EINA_UNUSED)
MY_DATA_GET(data, pd);
Eina_Rect rect = efl_ui_scrollable_viewport_geometry_get(data);
efl_ui_item_position_manager_viewport_set(pd->pos_man, rect);
efl_ui_position_manager_entity_viewport_set(pd->pos_man, rect);
}
static void
@ -233,7 +233,7 @@ _pan_position_changed_cb(void *data, const Efl_Event *ev EINA_UNUSED)
if (max.y > 0.0)
rpos.y = (double)pos.y/(double)max.y;
efl_ui_item_position_manager_scroll_position_set(pd->pos_man, rpos.x, rpos.y);
efl_ui_position_manager_entity_scroll_position_set(pd->pos_man, rpos.x, rpos.y);
}
EFL_CALLBACKS_ARRAY_DEFINE(pan_events_cb,
@ -253,7 +253,7 @@ _item_scroll_internal(Eo *obj EINA_UNUSED,
if (!pd->smanager) return;
ipos = efl_ui_item_position_manager_position_single_item(pd->pos_man, eina_list_data_idx(pd->items, item));
ipos = efl_ui_position_manager_entity_position_single_item(pd->pos_man, eina_list_data_idx(pd->items, item));
view = efl_ui_scrollable_viewport_geometry_get(pd->smanager);
vpos = efl_ui_scrollable_content_pos_get(pd->smanager);
@ -492,7 +492,7 @@ _hints_changed_cb(void *data, const Efl_Event *ev)
MY_DATA_GET(obj, pd);
int idx = eina_list_data_idx(pd->items, ev->object);
efl_ui_item_position_manager_item_size_changed(pd->pos_man, idx, idx);
efl_ui_position_manager_entity_item_size_changed(pd->pos_man, idx, idx);
}
static void
@ -576,7 +576,7 @@ unregister_item(Eo *obj, Efl_Ui_Item_Container_Data *pd, Efl_Ui_Item *item)
pd->items = eina_list_remove(pd->items, item);
pd->selected = eina_list_remove(pd->selected, item);
efl_event_callback_array_del(item, active_item(), obj);
efl_ui_item_position_manager_item_removed(pd->pos_man, id, item);
efl_ui_position_manager_entity_item_removed(pd->pos_man, id, item);
return EINA_TRUE;
}
@ -590,7 +590,7 @@ update_pos_man(Eo *obj EINA_UNUSED, Efl_Ui_Item_Container_Data *pd, Efl_Gfx_Enti
pd->obj_accessor.last_index = id;
pd->obj_accessor.current = pd->items;
}
efl_ui_item_position_manager_item_added(pd->pos_man, id, subobj);
efl_ui_position_manager_entity_item_added(pd->pos_man, id, subobj);
}
EOLIAN static Eina_Bool
@ -744,20 +744,20 @@ _pos_content_min_size_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
}
EFL_CALLBACKS_ARRAY_DEFINE(pos_manager_cbs,
{EFL_UI_ITEM_POSITION_MANAGER_EVENT_CONTENT_SIZE_CHANGED, _pos_content_size_changed_cb},
{EFL_UI_ITEM_POSITION_MANAGER_EVENT_CONTENT_MIN_SIZE_CHANGED, _pos_content_min_size_changed_cb},
{EFL_UI_POSITION_MANAGER_ENTITY_EVENT_CONTENT_SIZE_CHANGED, _pos_content_size_changed_cb},
{EFL_UI_POSITION_MANAGER_ENTITY_EVENT_CONTENT_MIN_SIZE_CHANGED, _pos_content_min_size_changed_cb},
)
EOLIAN static void
_efl_ui_item_container_position_manager_set(Eo *obj, Efl_Ui_Item_Container_Data *pd, Efl_Ui_Item_Position_Manager *layouter)
_efl_ui_item_container_position_manager_set(Eo *obj, Efl_Ui_Item_Container_Data *pd, Efl_Ui_Position_Manager_Entity *layouter)
{
if (layouter)
EINA_SAFETY_ON_FALSE_RETURN(efl_isa(layouter, EFL_UI_ITEM_POSITION_MANAGER_INTERFACE));
EINA_SAFETY_ON_FALSE_RETURN(efl_isa(layouter, EFL_UI_POSITION_MANAGER_ENTITY_INTERFACE));
if (pd->pos_man)
{
efl_event_callback_array_del(pd->pos_man, pos_manager_cbs(), obj);
efl_ui_item_position_manager_data_access_set(pd->pos_man, NULL, NULL, 0);
efl_ui_position_manager_entity_data_access_set(pd->pos_man, NULL, NULL, 0);
efl_del(pd->pos_man);
}
pd->pos_man = layouter;
@ -765,13 +765,13 @@ _efl_ui_item_container_position_manager_set(Eo *obj, Efl_Ui_Item_Container_Data
{
efl_parent_set(pd->pos_man, obj);
efl_event_callback_array_add(pd->pos_man, pos_manager_cbs(), obj);
efl_ui_item_position_manager_data_access_set(pd->pos_man, &pd->obj_accessor.pass_on, &pd->size_accessor, eina_list_count(pd->items));
efl_ui_item_position_manager_viewport_set(pd->pos_man, efl_ui_scrollable_viewport_geometry_get(obj));
efl_ui_position_manager_entity_data_access_set(pd->pos_man, &pd->obj_accessor.pass_on, &pd->size_accessor, eina_list_count(pd->items));
efl_ui_position_manager_entity_viewport_set(pd->pos_man, efl_ui_scrollable_viewport_geometry_get(obj));
efl_ui_layout_orientation_set(pd->pos_man, pd->dir);
}
}
EOLIAN static Efl_Ui_Item_Position_Manager*
EOLIAN static Efl_Ui_Position_Manager_Entity*
_efl_ui_item_container_position_manager_get(const Eo *obj EINA_UNUSED, Efl_Ui_Item_Container_Data *pd)
{
return pd->pos_man;

View File

@ -47,7 +47,7 @@ class @beta Efl.Ui.Item_Container extends Efl.Ui.Layout_Base implements
@property position_manager {
[[Position manager object that handles placement of items.]]
values {
position_manager : Efl.Ui.Item_Position_Manager @owned; [[The objects ownership is passed to the item container.]]
position_manager : Efl.Ui.Position_Manager.Entity @owned; [[The objects ownership is passed to the item container.]]
}
}
}

View File

@ -1,18 +0,0 @@
class @beta Efl.Ui.List_Position_Manager extends Efl.Object implements Efl.Ui.Item_Position_Manager
{
[[Implementation of Efl.Ui.Item_Position_manager for a list
Every item in the list will get at least his minsize applied, changes to the misize are listend to and change the layouting of all items. This supports the vertical and horizontal orientation.
]]
implements {
Efl.Object.destructor;
Efl.Ui.Item_Position_Manager.data_access {set;}
Efl.Ui.Item_Position_Manager.viewport {set;}
Efl.Ui.Item_Position_Manager.scroll_position {set;}
Efl.Ui.Item_Position_Manager.item_added;
Efl.Ui.Item_Position_Manager.item_removed;
Efl.Ui.Item_Position_Manager.position_single_item;
Efl.Ui.Item_Position_Manager.item_size_changed;
Efl.Ui.Layout_Orientable.orientation {set; get;}
}
}

View File

@ -9,6 +9,6 @@
#include <Efl_Ui.h>
#include "elm_priv.h"
#define MY_CLASS EFL_UI_ITEM_POSITION_MANAGER_CLASS
#define MY_CLASS EFL_UI_POSITION_MANAGER_ENTITY_CLASS
#include "efl_ui_item_position_manager.eo.c"
#include "efl_ui_position_manager_entity.eo.c"

View File

@ -1,5 +1,5 @@
interface @beta Efl.Ui.Item_Position_Manager extends Efl.Ui.Layout_Orientable
interface @beta Efl.Ui.Position_Manager.Entity extends Efl.Ui.Layout_Orientable
{
[[
This abstracts the basic placement of items in a not defined form under a viewport.

View File

@ -7,9 +7,9 @@
#include "elm_widget.h"
#include "elm_priv.h"
#define MY_CLASS EFL_UI_GRID_POSITION_MANAGER_CLASS
#define MY_CLASS EFL_UI_POSITION_MANAGER_GRID_CLASS
#define MY_DATA_GET(obj, pd) \
Efl_Ui_Grid_Position_Manager_Data *pd = efl_data_scope_get(obj, MY_CLASS);
Efl_Ui_Position_Manager_Grid_Data *pd = efl_data_scope_get(obj, MY_CLASS);
typedef struct {
Eina_Accessor *content_acc, *size_acc;
@ -27,10 +27,10 @@ typedef struct {
int columns;
int rows;
} current_display_table;
} Efl_Ui_Grid_Position_Manager_Data;
} Efl_Ui_Position_Manager_Grid_Data;
static inline void
vis_change_segment(Efl_Ui_Grid_Position_Manager_Data *pd, int a, int b, Eina_Bool flag)
vis_change_segment(Efl_Ui_Position_Manager_Grid_Data *pd, int a, int b, Eina_Bool flag)
{
for (int i = MIN(a, b); i < MAX(a, b); ++i)
{
@ -45,7 +45,7 @@ vis_change_segment(Efl_Ui_Grid_Position_Manager_Data *pd, int a, int b, Eina_Boo
}
static void
_reposition_content(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd)
_reposition_content(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd)
{
Eina_Size2D space_size;
int relevant_space_size, relevant_viewport;
@ -121,7 +121,7 @@ _reposition_content(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd)
}
static inline void
_flush_abs_size(Eo *obj, Efl_Ui_Grid_Position_Manager_Data *pd)
_flush_abs_size(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd)
{
int minor, major;
Eina_Size2D vp_size;
@ -165,12 +165,12 @@ _flush_abs_size(Eo *obj, Efl_Ui_Grid_Position_Manager_Data *pd)
if (vp_size.h != pd->last_viewport_size.h || vp_size.w != pd->last_viewport_size.w)
{
pd->last_viewport_size = vp_size;
efl_event_callback_call(obj, EFL_UI_ITEM_POSITION_MANAGER_EVENT_CONTENT_SIZE_CHANGED, &vp_size);
efl_event_callback_call(obj, EFL_UI_POSITION_MANAGER_ENTITY_EVENT_CONTENT_SIZE_CHANGED, &vp_size);
}
}
static inline void
_update_min_size(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd, int added_index)
_update_min_size(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd, int added_index)
{
Eina_Size2D elemsize;
@ -180,7 +180,7 @@ _update_min_size(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd, int
}
static inline void
_flush_min_size(Eo *obj, Efl_Ui_Grid_Position_Manager_Data *pd)
_flush_min_size(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd)
{
Eina_Size2D min_size = pd->max_min_size;
@ -192,12 +192,12 @@ _flush_min_size(Eo *obj, Efl_Ui_Grid_Position_Manager_Data *pd)
if (pd->prev_min_size.w != min_size.w || pd->prev_min_size.h != min_size.h)
{
pd->prev_min_size = min_size;
efl_event_callback_call(obj, EFL_UI_ITEM_POSITION_MANAGER_EVENT_CONTENT_MIN_SIZE_CHANGED, &min_size);
efl_event_callback_call(obj, EFL_UI_POSITION_MANAGER_ENTITY_EVENT_CONTENT_MIN_SIZE_CHANGED, &min_size);
}
}
EOLIAN static void
_efl_ui_grid_position_manager_efl_ui_item_position_manager_data_access_set(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd, Eina_Accessor *obj_access, Eina_Accessor *size_access, int size)
_efl_ui_position_manager_grid_efl_ui_position_manager_entity_data_access_set(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd, Eina_Accessor *obj_access, Eina_Accessor *size_access, int size)
{
pd->size_acc = size_access;
pd->content_acc = obj_access;
@ -205,7 +205,7 @@ _efl_ui_grid_position_manager_efl_ui_item_position_manager_data_access_set(Eo *o
}
EOLIAN static void
_efl_ui_grid_position_manager_efl_ui_item_position_manager_viewport_set(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd, Eina_Rect viewport)
_efl_ui_position_manager_grid_efl_ui_position_manager_entity_viewport_set(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd, Eina_Rect viewport)
{
pd->viewport = viewport;
_flush_abs_size(obj, pd);
@ -213,7 +213,7 @@ _efl_ui_grid_position_manager_efl_ui_item_position_manager_viewport_set(Eo *obj
}
EOLIAN static void
_efl_ui_grid_position_manager_efl_ui_item_position_manager_scroll_position_set(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd, double x, double y)
_efl_ui_position_manager_grid_efl_ui_position_manager_entity_scroll_position_set(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd, double x, double y)
{
pd->scroll_position.x = x;
pd->scroll_position.y = y;
@ -221,7 +221,7 @@ _efl_ui_grid_position_manager_efl_ui_item_position_manager_scroll_position_set(E
}
EOLIAN static void
_efl_ui_grid_position_manager_efl_ui_item_position_manager_item_added(Eo *obj, Efl_Ui_Grid_Position_Manager_Data *pd, int added_index, Efl_Gfx_Entity *subobj EINA_UNUSED)
_efl_ui_position_manager_grid_efl_ui_position_manager_entity_item_added(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd, int added_index, Efl_Gfx_Entity *subobj EINA_UNUSED)
{
pd->size ++;
@ -233,7 +233,7 @@ _efl_ui_grid_position_manager_efl_ui_item_position_manager_item_added(Eo *obj, E
}
EOLIAN static void
_efl_ui_grid_position_manager_efl_ui_item_position_manager_item_removed(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd, int removed_index EINA_UNUSED, Efl_Gfx_Entity *subobj EINA_UNUSED)
_efl_ui_position_manager_grid_efl_ui_position_manager_entity_item_removed(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd, int removed_index EINA_UNUSED, Efl_Gfx_Entity *subobj EINA_UNUSED)
{
EINA_SAFETY_ON_FALSE_RETURN(pd->size > 0);
pd->size --;
@ -247,7 +247,7 @@ _efl_ui_grid_position_manager_efl_ui_item_position_manager_item_removed(Eo *obj
EOLIAN static void
_efl_ui_grid_position_manager_efl_ui_item_position_manager_item_size_changed(Eo *obj, Efl_Ui_Grid_Position_Manager_Data *pd, int start_id, int end_id)
_efl_ui_position_manager_grid_efl_ui_position_manager_entity_item_size_changed(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd, int start_id, int end_id)
{
for (int i = start_id; i <= end_id; ++i)
{
@ -260,7 +260,7 @@ _efl_ui_grid_position_manager_efl_ui_item_position_manager_item_size_changed(Eo
}
EOLIAN static void
_efl_ui_grid_position_manager_efl_ui_layout_orientable_orientation_set(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd, Efl_Ui_Layout_Orientation dir)
_efl_ui_position_manager_grid_efl_ui_layout_orientable_orientation_set(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd, Efl_Ui_Layout_Orientation dir)
{
pd->dir = dir;
_flush_min_size(obj, pd);
@ -270,13 +270,13 @@ _efl_ui_grid_position_manager_efl_ui_layout_orientable_orientation_set(Eo *obj E
EOLIAN static Efl_Ui_Layout_Orientation
_efl_ui_grid_position_manager_efl_ui_layout_orientable_orientation_get(const Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd)
_efl_ui_position_manager_grid_efl_ui_layout_orientable_orientation_get(const Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd)
{
return pd->dir;
}
EOLIAN static Eina_Rect
_efl_ui_grid_position_manager_efl_ui_item_position_manager_position_single_item(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Position_Manager_Data *pd, int idx)
_efl_ui_position_manager_grid_efl_ui_position_manager_entity_position_single_item(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd, int idx)
{
Eina_Rect geom;
Eina_Size2D space_size;
@ -318,4 +318,4 @@ _efl_ui_grid_position_manager_efl_ui_item_position_manager_position_single_item(
return geom;
}
#include "efl_ui_grid_position_manager.eo.c"
#include "efl_ui_position_manager_grid.eo.c"

View File

@ -0,0 +1,17 @@
class @beta Efl.Ui.Position_Manager.Grid extends Efl.Object implements Efl.Ui.Position_Manager.Entity
{
[[Implementation of @Efl.Ui.Position_Manager.Entity for two-dimensional grids.
Every item in the grid has the same size, which is the biggest minimum size of all items.
]]
implements {
Efl.Ui.Position_Manager.Entity.data_access {set;}
Efl.Ui.Position_Manager.Entity.viewport {set;}
Efl.Ui.Position_Manager.Entity.scroll_position {set;}
Efl.Ui.Position_Manager.Entity.item_added;
Efl.Ui.Position_Manager.Entity.item_removed;
Efl.Ui.Position_Manager.Entity.position_single_item;
Efl.Ui.Position_Manager.Entity.item_size_changed;
Efl.Ui.Layout_Orientable.orientation {set; get;}
}
}

View File

@ -8,9 +8,9 @@
#include "elm_widget.h"
#include "elm_priv.h"
#define MY_CLASS EFL_UI_LIST_POSITION_MANAGER_CLASS
#define MY_CLASS EFL_UI_POSITION_MANAGER_LIST_CLASS
#define MY_DATA_GET(obj, pd) \
Efl_Ui_List_Position_Manager_Data *pd = efl_data_scope_get(obj, MY_CLASS);
Efl_Ui_Position_Manager_List_Data *pd = efl_data_scope_get(obj, MY_CLASS);
typedef struct {
Eina_Accessor *content_acc, *size_acc;
@ -26,7 +26,7 @@ typedef struct {
struct {
unsigned int start_id, end_id;
} prev_run;
} Efl_Ui_List_Position_Manager_Data;
} Efl_Ui_Position_Manager_List_Data;
/*
* The here used cache is a sum map
@ -37,7 +37,7 @@ typedef struct {
*/
static void
cache_require(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd)
cache_require(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_List_Data *pd)
{
unsigned int i;
@ -78,7 +78,7 @@ cache_require(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd)
}
static void
cache_invalidate(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd)
cache_invalidate(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_List_Data *pd)
{
if (pd->size_cache)
free(pd->size_cache);
@ -86,14 +86,14 @@ cache_invalidate(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd)
}
static inline int
cache_access(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd, unsigned int idx)
cache_access(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_List_Data *pd, unsigned int idx)
{
EINA_SAFETY_ON_FALSE_RETURN_VAL(idx <= pd->size, 0);
return pd->size_cache[idx];
}
static void
recalc_absolut_size(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd)
recalc_absolut_size(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd)
{
Eina_Size2D min_size = EINA_SIZE2D(-1, -1);
cache_require(obj, pd);
@ -108,7 +108,7 @@ recalc_absolut_size(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd)
pd->abs_size.w = MAX(cache_access(obj, pd, pd->size), pd->abs_size.w);
}
efl_event_callback_call(obj, EFL_UI_ITEM_POSITION_MANAGER_EVENT_CONTENT_SIZE_CHANGED, &pd->abs_size);
efl_event_callback_call(obj, EFL_UI_POSITION_MANAGER_ENTITY_EVENT_CONTENT_SIZE_CHANGED, &pd->abs_size);
if (pd->dir == EFL_UI_LAYOUT_ORIENTATION_VERTICAL)
{
@ -119,11 +119,11 @@ recalc_absolut_size(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd)
min_size.h = pd->maximum_min_size;
}
efl_event_callback_call(obj, EFL_UI_ITEM_POSITION_MANAGER_EVENT_CONTENT_MIN_SIZE_CHANGED, &min_size);
efl_event_callback_call(obj, EFL_UI_POSITION_MANAGER_ENTITY_EVENT_CONTENT_MIN_SIZE_CHANGED, &min_size);
}
static inline void
vis_change_segment(Efl_Ui_List_Position_Manager_Data *pd, int a, int b, Eina_Bool flag)
vis_change_segment(Efl_Ui_Position_Manager_List_Data *pd, int a, int b, Eina_Bool flag)
{
for (int i = MIN(a, b); i < MAX(a, b); ++i)
{
@ -138,7 +138,7 @@ vis_change_segment(Efl_Ui_List_Position_Manager_Data *pd, int a, int b, Eina_Boo
}
static void
position_content(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd)
position_content(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_List_Data *pd)
{
Eina_Rect geom;
Eina_Size2D space_size;
@ -244,7 +244,7 @@ _rebuild_job_cb(void *data, Eina_Value v EINA_UNUSED, const Eina_Future *f EINA_
}
static void
schedule_recalc_absolut_size(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd)
schedule_recalc_absolut_size(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd)
{
if (pd->rebuild_absolut_size) return;
@ -253,7 +253,7 @@ schedule_recalc_absolut_size(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd)
}
EOLIAN static void
_efl_ui_list_position_manager_efl_ui_item_position_manager_data_access_set(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd, Eina_Accessor *content_access, Eina_Accessor *size_access, int size)
_efl_ui_position_manager_list_efl_ui_position_manager_entity_data_access_set(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_List_Data *pd, Eina_Accessor *content_access, Eina_Accessor *size_access, int size)
{
cache_invalidate(obj, pd);
pd->content_acc = content_access;
@ -262,7 +262,7 @@ _efl_ui_list_position_manager_efl_ui_item_position_manager_data_access_set(Eo *o
}
EOLIAN static void
_efl_ui_list_position_manager_efl_ui_item_position_manager_viewport_set(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd, Eina_Rect size)
_efl_ui_position_manager_list_efl_ui_position_manager_entity_viewport_set(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd, Eina_Rect size)
{
pd->viewport = size;
@ -271,7 +271,7 @@ _efl_ui_list_position_manager_efl_ui_item_position_manager_viewport_set(Eo *obj,
}
EOLIAN static void
_efl_ui_list_position_manager_efl_ui_item_position_manager_scroll_position_set(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd, double x, double y)
_efl_ui_position_manager_list_efl_ui_position_manager_entity_scroll_position_set(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd, double x, double y)
{
pd->scroll_position.x = x;
pd->scroll_position.y = y;
@ -279,7 +279,7 @@ _efl_ui_list_position_manager_efl_ui_item_position_manager_scroll_position_set(E
}
EOLIAN static void
_efl_ui_list_position_manager_efl_ui_item_position_manager_item_added(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd, int added_index EINA_UNUSED, Efl_Gfx_Entity *subobj)
_efl_ui_position_manager_list_efl_ui_position_manager_entity_item_added(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_List_Data *pd, int added_index EINA_UNUSED, Efl_Gfx_Entity *subobj)
{
if (pd->size == 0)
{
@ -296,7 +296,7 @@ _efl_ui_list_position_manager_efl_ui_item_position_manager_item_added(Eo *obj EI
}
EOLIAN static void
_efl_ui_list_position_manager_efl_ui_item_position_manager_item_removed(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd, int removed_index EINA_UNUSED, Efl_Gfx_Entity *subobj)
_efl_ui_position_manager_list_efl_ui_position_manager_entity_item_removed(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_List_Data *pd, int removed_index EINA_UNUSED, Efl_Gfx_Entity *subobj)
{
pd->size --;
if (subobj)
@ -308,7 +308,7 @@ _efl_ui_list_position_manager_efl_ui_item_position_manager_item_removed(Eo *obj
}
EOLIAN static Eina_Rect
_efl_ui_list_position_manager_efl_ui_item_position_manager_position_single_item(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd, int idx)
_efl_ui_position_manager_list_efl_ui_position_manager_entity_position_single_item(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd, int idx)
{
Eina_Rect geom;
Eina_Size2D space_size;
@ -349,14 +349,14 @@ _efl_ui_list_position_manager_efl_ui_item_position_manager_position_single_item(
}
EOLIAN static void
_efl_ui_list_position_manager_efl_ui_item_position_manager_item_size_changed(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd, int start_id EINA_UNUSED, int end_id EINA_UNUSED)
_efl_ui_position_manager_list_efl_ui_position_manager_entity_item_size_changed(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd, int start_id EINA_UNUSED, int end_id EINA_UNUSED)
{
cache_invalidate(obj, pd);
schedule_recalc_absolut_size(obj, pd);
}
EOLIAN static void
_efl_ui_list_position_manager_efl_ui_layout_orientable_orientation_set(Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd, Efl_Ui_Layout_Orientation dir)
_efl_ui_position_manager_list_efl_ui_layout_orientable_orientation_set(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_List_Data *pd, Efl_Ui_Layout_Orientation dir)
{
pd->dir = dir;
//in order to reset the state of the visible items, just hide everything and set the old segment accordingly
@ -371,13 +371,13 @@ _efl_ui_list_position_manager_efl_ui_layout_orientable_orientation_set(Eo *obj E
}
EOLIAN static Efl_Ui_Layout_Orientation
_efl_ui_list_position_manager_efl_ui_layout_orientable_orientation_get(const Eo *obj EINA_UNUSED, Efl_Ui_List_Position_Manager_Data *pd)
_efl_ui_position_manager_list_efl_ui_layout_orientable_orientation_get(const Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_List_Data *pd)
{
return pd->dir;
}
EOLIAN static void
_efl_ui_list_position_manager_efl_object_destructor(Eo *obj, Efl_Ui_List_Position_Manager_Data *pd)
_efl_ui_position_manager_list_efl_object_destructor(Eo *obj, Efl_Ui_Position_Manager_List_Data *pd)
{
if (pd->rebuild_absolut_size)
eina_future_cancel(pd->rebuild_absolut_size);
@ -386,4 +386,4 @@ _efl_ui_list_position_manager_efl_object_destructor(Eo *obj, Efl_Ui_List_Positio
}
#include "efl_ui_list_position_manager.eo.c"
#include "efl_ui_position_manager_list.eo.c"

View File

@ -0,0 +1,18 @@
class @beta Efl.Ui.Position_Manager.List extends Efl.Object implements Efl.Ui.Position_Manager.Entity
{
[[Implementation of @Efl.Ui.Position_Manager.Entity for a list
Every item in the list will get at least his minsize applied, changes to the misize are listend to and change the layouting of all items. This supports the vertical and horizontal orientation.
]]
implements {
Efl.Object.destructor;
Efl.Ui.Position_Manager.Entity.data_access {set;}
Efl.Ui.Position_Manager.Entity.viewport {set;}
Efl.Ui.Position_Manager.Entity.scroll_position {set;}
Efl.Ui.Position_Manager.Entity.item_added;
Efl.Ui.Position_Manager.Entity.item_removed;
Efl.Ui.Position_Manager.Entity.position_single_item;
Efl.Ui.Position_Manager.Entity.item_size_changed;
Efl.Ui.Layout_Orientable.orientation {set; get;}
}
}

View File

@ -182,9 +182,9 @@ pub_eo_files = [
'efl_ui_clickable_util.eo',
'efl_ui_format.eo',
'efl_ui_item_container.eo',
'efl_ui_item_position_manager.eo',
'efl_ui_list_position_manager.eo',
'efl_ui_grid_position_manager.eo',
'efl_ui_position_manager_entity.eo',
'efl_ui_position_manager_list.eo',
'efl_ui_position_manager_grid.eo',
]
foreach eo_file : pub_eo_files
@ -941,9 +941,9 @@ elementary_src = [
'efl_ui_format.c',
'efl_ui_scroll_util.c',
'efl_ui_item_container.c',
'efl_ui_item_position_manager.c',
'efl_ui_list_position_manager.c',
'efl_ui_grid_position_manager.c',
'efl_ui_position_manager_entity.c',
'efl_ui_position_manager_list.c',
'efl_ui_position_manager_grid.c',
]
elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, efreet_mime, efreet_trash, eio, atspi, dl, intl]

View File

@ -11,8 +11,8 @@ static Eo *win;
static void
item_container_setup()
{
Eo * list = efl_new(EFL_UI_GRID_POSITION_MANAGER_CLASS);
position_manager = efl_new(EFL_UI_GRID_POSITION_MANAGER_CLASS);
Eo * list = efl_new(EFL_UI_POSITION_MANAGER_GRID_CLASS);
position_manager = efl_new(EFL_UI_POSITION_MANAGER_GRID_CLASS);
win = win_add();
item_container = efl_add(EFL_UI_ITEM_CONTAINER_CLASS, win,
efl_ui_item_container_position_manager_set(efl_added, list));

View File

@ -22,8 +22,8 @@ item_container_teardown()
EFL_START_TEST(finalizer_check)
{
Eo *grid = efl_new(EFL_UI_GRID_POSITION_MANAGER_CLASS);
Eo *list = efl_new(EFL_UI_GRID_POSITION_MANAGER_CLASS);
Eo *grid = efl_new(EFL_UI_POSITION_MANAGER_GRID_CLASS);
Eo *list = efl_new(EFL_UI_POSITION_MANAGER_GRID_CLASS);
Eo *random_obj = efl_add(EFL_UI_BUTTON_CLASS, win);
Eo *o;

View File

@ -11,8 +11,8 @@ static Eo *win;
static void
item_container_setup()
{
Eo * list = efl_new(EFL_UI_LIST_POSITION_MANAGER_CLASS);
position_manager = efl_new(EFL_UI_LIST_POSITION_MANAGER_CLASS);
Eo * list = efl_new(EFL_UI_POSITION_MANAGER_LIST_CLASS);
position_manager = efl_new(EFL_UI_POSITION_MANAGER_LIST_CLASS);
win = win_add();
item_container = efl_add(EFL_UI_ITEM_CONTAINER_CLASS, win,
efl_ui_item_container_position_manager_set(efl_added, list));

View File

@ -71,7 +71,7 @@ _initial_setup(void)
inner_size_acc.lock = _lock_cb;
inner_size_acc.clone = _clone_cb;
efl_ui_item_position_manager_data_access_set(position_manager,
efl_ui_position_manager_entity_data_access_set(position_manager,
eina_array_accessor_new(arr_obj),
&inner_size_acc, 0);
}
@ -87,7 +87,7 @@ _add_item(Eo *obj, Eina_Size2D size)
eina_inarray_push(arr_size, &size);
efl_ui_item_position_manager_item_added(position_manager, idx, obj);
efl_ui_position_manager_entity_item_added(position_manager, idx, obj);
return idx;
}
@ -122,15 +122,15 @@ EFL_START_TEST(no_crash1)
_initial_setup();
//try to resize the viewport while we have no item
efl_ui_item_position_manager_viewport_set(position_manager, EINA_RECT(20, 20, 200, 200));
efl_ui_position_manager_entity_viewport_set(position_manager, EINA_RECT(20, 20, 200, 200));
_iterate_a_few();
efl_ui_item_position_manager_viewport_set(position_manager, EINA_RECT(20, 20, 0, 0));
efl_ui_position_manager_entity_viewport_set(position_manager, EINA_RECT(20, 20, 0, 0));
_iterate_a_few();
_add_item(efl_add(EFL_UI_GRID_DEFAULT_ITEM_CLASS, win), EINA_SIZE2D(20, 20));
_iterate_a_few();
efl_ui_item_position_manager_viewport_set(position_manager, EINA_RECT(20, 20, 200, 200));
efl_ui_position_manager_entity_viewport_set(position_manager, EINA_RECT(20, 20, 200, 200));
_iterate_a_few();
efl_ui_item_position_manager_viewport_set(position_manager, EINA_RECT(20, 20, 0, 0));
efl_ui_position_manager_entity_viewport_set(position_manager, EINA_RECT(20, 20, 0, 0));
_iterate_a_few();
}
EFL_END_TEST
@ -140,15 +140,15 @@ EFL_START_TEST(no_crash2)
_initial_setup();
//try to resize the viewport while we have no item
efl_ui_item_position_manager_viewport_set(position_manager, EINA_RECT(20, 20, 200, 200));
efl_ui_position_manager_entity_viewport_set(position_manager, EINA_RECT(20, 20, 200, 200));
_iterate_a_few();
efl_ui_item_position_manager_viewport_set(position_manager, EINA_RECT(20, 20, 0, 0));
efl_ui_position_manager_entity_viewport_set(position_manager, EINA_RECT(20, 20, 0, 0));
_iterate_a_few();
_add_item(NULL, EINA_SIZE2D(20, 20));
_iterate_a_few();
efl_ui_item_position_manager_viewport_set(position_manager, EINA_RECT(20, 20, 0, 0));
efl_ui_position_manager_entity_viewport_set(position_manager, EINA_RECT(20, 20, 0, 0));
_iterate_a_few();
efl_ui_item_position_manager_viewport_set(position_manager, EINA_RECT(20, 20, 200, 200));
efl_ui_position_manager_entity_viewport_set(position_manager, EINA_RECT(20, 20, 200, 200));
_iterate_a_few();
_update_item(0, efl_add(EFL_UI_GRID_DEFAULT_ITEM_CLASS, win), EINA_SIZE2D(20, 20));
_iterate_a_few();
@ -166,14 +166,14 @@ EFL_START_TEST(viewport_newsize_event_result)
{
Eina_Size2D size = EINA_SIZE2D(-2, -2), min_size = EINA_SIZE2D(-2, -2);
efl_event_callback_add(position_manager,
EFL_UI_ITEM_POSITION_MANAGER_EVENT_CONTENT_SIZE_CHANGED, _content_size_cb, &size);
EFL_UI_POSITION_MANAGER_ENTITY_EVENT_CONTENT_SIZE_CHANGED, _content_size_cb, &size);
efl_event_callback_add(position_manager,
EFL_UI_ITEM_POSITION_MANAGER_EVENT_CONTENT_MIN_SIZE_CHANGED, _content_size_cb, &min_size);
EFL_UI_POSITION_MANAGER_ENTITY_EVENT_CONTENT_MIN_SIZE_CHANGED, _content_size_cb, &min_size);
_initial_setup();
_add_item(efl_add(EFL_UI_GRID_DEFAULT_ITEM_CLASS, win), EINA_SIZE2D(20, 20));
_add_item(efl_add(EFL_UI_GRID_DEFAULT_ITEM_CLASS, win), EINA_SIZE2D(20, 30));
efl_ui_item_position_manager_viewport_set(position_manager, EINA_RECT(0, 0, 200, 200));
efl_ui_position_manager_entity_viewport_set(position_manager, EINA_RECT(0, 0, 200, 200));
_iterate_a_few();
ck_assert_int_ne(size.w, -2);

View File

@ -13,7 +13,7 @@ EOLIAN static Efl_Object*
_test_efl_ui_item_container_list_efl_object_constructor(Eo *obj, void *pd EINA_UNUSED)
{
efl_constructor(efl_super(obj, TEST_EFL_UI_ITEM_CONTAINER_LIST_CLASS));
efl_ui_item_container_position_manager_set(obj, efl_new(EFL_UI_LIST_POSITION_MANAGER_CLASS));
efl_ui_item_container_position_manager_set(obj, efl_new(EFL_UI_POSITION_MANAGER_LIST_CLASS));
return obj;
}