From: Junkyeong Kim Date: Fri, 10 Jan 2025 08:41:31 +0000 (+0900) Subject: e_view_layout: Refactory e_view_layout X-Git-Tag: accepted/tizen/unified/20250116.075516~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=78756e1de20aa8884ca51caa11a3a591df7e2d2c;p=platform%2Fupstream%2Fenlightenment.git e_view_layout: Refactory e_view_layout AS IS Wrapping e_layout. TO BE Replace e_layout without evas object. Change-Id: I8786aec0605fb509eacc958ec5f8135364f82c7a --- diff --git a/src/bin/core/e_view_intern.h b/src/bin/core/e_view_intern.h index 40042b65c2..5604e72c00 100644 --- a/src/bin/core/e_view_intern.h +++ b/src/bin/core/e_view_intern.h @@ -23,7 +23,6 @@ typedef enum { E_VIEW_TYPE_IMAGE, E_VIEW_TYPE_CLIENT, E_VIEW_TYPE_EDJE, - E_VIEW_TYPE_LAYOUT, } E_View_Type; struct _E_View_Impl diff --git a/src/bin/core/e_view_layout.c b/src/bin/core/e_view_layout.c index 6d5f9c86db..b4c259e779 100644 --- a/src/bin/core/e_view_layout.c +++ b/src/bin/core/e_view_layout.c @@ -1,253 +1,466 @@ #include "e_view_layout_intern.h" -#include "e_layout_intern.h" +#include "e_view_rect.h" +#include "e_view_image.h" #include "e_view_intern.h" +#include "e_view_client_intern.h" #include "e_canvas_intern.h" +typedef struct _E_View_Layout_Item E_View_Layout_Item; + struct _E_View_Layout { - E_View view; + E_View_Tree tree; + E_View_Rect *clip; + + int x, y, w, h; + int vw, vh; + int frozen; + unsigned char changed : 1; + Eina_Inlist *items; +}; - Eina_List *children; +struct _E_View_Layout_Item +{ + EINA_INLIST; + E_View_Layout *layout; + int x, y, w, h; + E_View *view; + E_Canvas_Layer prev_layer; + bool destroying; + struct wl_listener destroy; }; -static void _view_layout_handle_destroy(E_View *view); +static void _e_view_layout_disown(E_View *child); +static void _view_layout_handle_destroy(E_View_Tree *tree); -const static E_View_Impl view_layout_impl = { - .destroy = _view_layout_handle_destroy, +E_View_Tree_Impl view_layout_tree_impl = { + .destroy = _view_layout_handle_destroy, }; static E_View_Layout * -_view_layout_from_view(E_View *view) +_view_layout_from_tree(E_View_Tree *tree) { E_View_Layout *layout; - assert(view->impl == &view_layout_impl); - return wl_container_of(view, layout, view); + assert(tree->impl == &view_layout_tree_impl); + return wl_container_of(tree, layout, tree); } static void -_view_layout_handle_destroy(E_View *view) +_view_layout_handle_destroy(E_View_Tree *tree) { - E_View_Layout *layout = _view_layout_from_view(view); + E_View_Layout *layout = _view_layout_from_tree(tree); + E_View *view = e_view_rect_view_get(layout->clip); - evas_object_del(view->eo); + while (layout->items) + { + E_View_Layout_Item *li = (E_View_Layout_Item *)layout->items; + layout->items = eina_inlist_remove(layout->items, EINA_INLIST_GET(li)); + _e_view_layout_disown(li->view); + } + e_view_destroy(view); free(layout); } -EINTERN int -e_view_layout_freeze(E_View *view) +static void +_e_view_layout_move_resize_item(E_View_Layout_Item *li) { - return e_layout_freeze(view->eo); + e_view_position_set(li->view, + li->layout->x + ((li->x * li->layout->w) / li->layout->vw), + li->layout->y + ((li->y * li->layout->h) / li->layout->vh)); + if (li->view->type == E_VIEW_TYPE_RECT) + e_view_rect_size_set(e_view_rect_try_from_view(li->view), + MAX((li->w * li->layout->w) / li->layout->vw, 1), + MAX((li->h * li->layout->h) / li->layout->vh, 1)); + else if (li->view->type == E_VIEW_TYPE_IMAGE) + e_view_image_size_set(e_view_image_try_from_view(li->view), + MAX((li->w * li->layout->w) / li->layout->vw, 1), + MAX((li->h * li->layout->h) / li->layout->vh, 1)); +#ifndef E_VIEW_TEST + else if (li->view->type == E_VIEW_TYPE_CLIENT) + e_view_client_size_set(e_view_client_try_from_view(li->view), + MAX((li->w * li->layout->w) / li->layout->vw, 1), + MAX((li->h * li->layout->h) / li->layout->vh, 1)); +#endif +/* + else if (li->view->type == E_VIEW_TYPE_EDJE) + e_view_edje_size_set(e_view_edje_try_from_view(li->view), + MAX((li->w * li->layout->w) / li->layout->vw, 1), + MAX((li->h * li->layout->h) / li->layout->vh, 1)); +*/ } -EINTERN int -e_view_layout_thaw(E_View *view) +static void +_e_view_layout_reconfigure(E_View_Layout *layout) { - return e_layout_thaw(view->eo); -} + E_View_Layout_Item *li; -EINTERN void -e_view_layout_virtual_size_get(E_View *view, int *w, int *h) -{ - e_layout_virtual_size_get(view->eo, w, h); -} + if (!layout->changed) return; -EINTERN void -e_view_layout_child_lower(E_View *view) -{ - e_layout_child_lower(view->eo); -} + EINA_INLIST_FOREACH(layout->items, li) + _e_view_layout_move_resize_item(li); -EINTERN void -e_view_layout_child_raise_above(E_View *view, E_View *above) -{ - e_layout_child_raise_above(view->eo, above->eo); + layout->changed = 0; } -EINTERN void -e_view_layout_child_lower_below (E_View *view, E_View *below) +static void +_e_view_layout_cb_child_destroy(struct wl_listener *listener, void *data) { - e_layout_child_lower_below(view->eo, below->eo); -} + E_View_Layout_Item *li = wl_container_of(listener, li, destroy); -EINTERN void -e_view_layout_child_geometry_get(E_View *view, int *x, int *y, int *w, int *h) -{ - e_layout_child_geometry_get(view->eo, x, y, w, h); + li->destroying = true; + e_view_layout_unpack(li->view); } -EINTERN E_View * -e_view_layout_top_child_at_xy_get(E_View *view, int x, int y, Eina_Bool vis, const Eina_List *ignore) +static E_View_Layout_Item * +_e_view_layout_adopt(E_View_Layout *layout, E_View *child) { - Evas_Object* obj; - E_View *ignore_view; - Eina_List *l, *evas_list = NULL; - EINA_LIST_FOREACH((Eina_List *)ignore, l, ignore_view) - { - evas_list = eina_list_append(evas_list, ignore_view->eo); - } + E_View_Layout_Item *li; - obj = e_layout_top_child_at_xy_get(view->eo, x, y, vis, evas_list); - eina_list_free(evas_list); + li = e_view_data_get(child, "e_view_layout_data"); - if (obj) - return evas_object_data_get(obj, "e_view"); + if (li) e_view_layout_unpack(child); + li = calloc(1, sizeof(E_View_Layout_Item)); + if (!li) return NULL; - return NULL; -} + li->layout = layout; + li->view = child; + li->prev_layer = e_view_layer_index_get(child); -EINTERN E_View * -e_view_layout_child_below_get(E_View *view) -{ - Evas_Object* obj; + e_view_clip_set(child, e_view_rect_view_get(layout->clip)); + e_view_reparent(child, &layout->tree); + e_view_data_set(child, "e_view_layout_data", li); - obj = e_layout_child_below_get(view->eo); + li->destroy.notify = _e_view_layout_cb_child_destroy; + e_view_event_listener_add(child, E_VIEW_DESTROY, &li->destroy); - if (obj) - return evas_object_data_get(obj, "e_view"); + if (!e_view_visible_get(e_view_rect_view_get(layout->clip)) && + e_view_visible_get(e_view_tree_view_get(&layout->tree))) + e_view_show(e_view_rect_view_get(layout->clip)); - return NULL; + return li; } -EINTERN E_View * -e_view_layout_child_above_get(E_View *view) +static void +_e_view_layout_disown(E_View *child) { - Evas_Object* obj; + E_View_Layout_Item *li; - obj = e_layout_child_above_get(view->eo); + li = e_view_data_get(child, "e_view_layout_data"); + if (!li) return; + if (!li->layout->items) + { + e_view_hide(e_view_rect_view_get(li->layout->clip)); + } - if (obj) - return evas_object_data_get(obj, "e_view"); + e_view_event_listener_del(child, E_VIEW_DESTROY, &li->destroy); + e_view_data_del(child, "e_view_layout_data"); + + if (!li->destroying) + { + e_view_reparent(child, e_canvas_layer_view_tree_get(e_canvas_get(child), li->prev_layer)); + } - return NULL; + free(li); } -EINTERN E_View * -e_view_layout_top_child_get(E_View *view) +EINTERN int +e_view_layout_freeze(E_View_Layout *layout) { - Evas_Object* obj; - - obj = e_layout_top_child_get(view->eo); + if (layout == NULL) return 0; - if (obj) - return evas_object_data_get(obj, "e_view"); - - return NULL; + layout->frozen++; + return layout->frozen; } -EINTERN void -e_view_layout_coord_canvas_to_virtual(E_View *view, int cx, int cy, int *vx, int *vy) +EINTERN int +e_view_layout_thaw(E_View_Layout *layout) { - e_layout_coord_canvas_to_virtual(view->eo, cx, cy, vx, vy); + if (layout == NULL) return 0; + + layout->frozen--; + if (layout->frozen <= 0) _e_view_layout_reconfigure(layout); + return layout->frozen; } EINTERN void -e_view_layout_coord_virtual_to_canvas(E_View *view, int vx, int vy, int *cx, int *cy) +e_view_layout_virtual_size_get(E_View_Layout *layout, int *w, int *h) { - e_layout_coord_virtual_to_canvas(view->eo, vx, vy, cx, cy); + if (layout == NULL) return; + + if (w) *w = layout->vw; + if (h) *h = layout->vh; } -E_API E_View_Layout * -e_view_layout_try_from_view(E_View *view) +EINTERN void +e_view_layout_child_lower(E_View *view) { - if (view->impl != &view_layout_impl) - return NULL; + E_View_Layout_Item *li; - return _view_layout_from_view(view); + li = e_view_data_get(view, "e_view_layout_data"); + if (!li) return; + if ((!li->layout->items) || (!EINA_INLIST_GET(li)->next)) return; + li->layout->items = eina_inlist_promote(li->layout->items, EINA_INLIST_GET(li)); + e_view_lower_to_bottom(view); } - +#if 0 E_API E_View * e_view_layout_view_get(E_View_Layout *layout) { - return &layout->view; + if (!layout) return NULL; + + return e_view_tree_view_get(&layout->tree); } +#endif E_API E_View_Layout * e_view_layout_create(E_View_Tree *parent) { - E_Canvas *canvas; E_View_Layout *layout; - Evas_Object *eo; + const int color[4] = {255, 255, 255, 255}; assert(parent != NULL); - layout = malloc(sizeof(*layout)); + layout = calloc(1, sizeof(E_View_Layout)); if (!layout) return NULL; - layout->children = NULL; + e_view_tree_init(&layout->tree, &view_layout_tree_impl, parent); +// e_view_reorderable_set(&layout->tree.view, false); - canvas = e_canvas_get(&parent->view); - eo = e_layout_add(canvas->evas); - if (!eo) - { - free(layout); - return NULL; - } + layout->vw = 1; + layout->vh = 1; + + layout->clip = e_view_rect_create(&layout->tree, 200002, 200002, color); + e_view_position_set(e_view_rect_view_get(layout->clip), -100001, -100001); + +// _e_view_layout_adopt(layout, e_view_rect_view_get(layout->clip)); - e_view_init(&layout->view, E_VIEW_TYPE_LAYOUT, (E_View_Impl*)&view_layout_impl, eo, parent); +// evas_object_intercept_layer_set_callback_add(obj, _e_layout_intercept_layer_set, sd); return layout; } +E_API void e_view_layout_destroy(E_View_Layout *layout) +{ + if (!layout) return; + + while (layout->items) + { + E_View_Layout_Item *li = (E_View_Layout_Item*)layout->items; + layout->items = eina_inlist_remove(layout->items, EINA_INLIST_GET(li)); + _e_view_layout_disown(li->view); + } + e_view_destroy(e_view_rect_view_get(layout->clip)); + free(layout); +} + E_API void e_view_layout_virtual_size_set(E_View_Layout *layout, int w, int h) { - E_View *view; - if (!layout) return; - view = e_view_layout_view_get(layout); - e_layout_virtual_size_set(view->eo, w, h); + if (w < 1) w = 1; + if (h < 1) h = 1; + if (layout->vw == w && layout->vh == h) return; + + layout->vw = w; + layout->vh = h; + layout->changed = 1; + if (layout->frozen <= 0) _e_view_layout_reconfigure(layout); } E_API void e_view_layout_pack(E_View_Layout *layout, E_View *child) { - E_View *view; + E_View_Layout_Item *li; if (!layout || !child) return; - view = e_view_layout_view_get(layout); - e_layout_pack(view->eo, child->eo); + li = _e_view_layout_adopt(layout, child); + if (!li) return; - layout->children = eina_list_append(layout->children, child); - e_view_data_set(child, "e_view_layout", layout); + layout->items = eina_inlist_append(layout->items, EINA_INLIST_GET(li)); + if (layout->frozen <= 0) _e_view_layout_move_resize_item(li); } E_API void e_view_layout_unpack(E_View *child) { + E_View_Layout *layout; + E_View_Layout_Item *li; + if (!child) return; - E_View_Layout *layout = e_view_data_get(child, "e_view_layout"); - if (!layout) return; + li = e_view_data_get(child, "e_view_layout"); + if (!li) return; - layout->children = eina_list_remove(layout->children, child); - e_layout_unpack(child->eo); + layout = li->layout; + layout->items = eina_inlist_remove(layout->items, EINA_INLIST_GET(li)); + _e_view_layout_disown(child); } E_API Eina_List * e_view_layout_children_get(E_View_Layout *layout) { + Eina_List *l = NULL; + E_View_Layout_Item *li; + if (!layout) return NULL; + if (!layout->items) return NULL; - return layout->children; + EINA_INLIST_FOREACH(layout->items, li) + { + l = eina_list_append(l, li->view); + } + + return l; } E_API void e_view_layout_child_move(E_View *child, int x, int y) { - e_layout_child_move(child->eo, x, y); + E_View_Layout_Item *li; + + li = e_view_data_get(child, "e_view_layout_data"); + if (!li) return; + if ((li->x == x) && (li->y == y)) return; + li->x = x; + li->y = y; + if (li->layout->frozen <= 0) _e_view_layout_move_resize_item(li); } E_API void e_view_layout_child_resize(E_View *child, int w, int h) { - e_layout_child_resize(child->eo, w, h); + E_View_Layout_Item *li; + + li = e_view_data_get(child, "e_view_layout_data"); + if (!li) return; + if (w < 0) w = 0; + if (h < 0) h = 0; + if ((li->w == w) && (li->h == h)) return; + li->w = w; + li->h = h; + if (li->layout->frozen <= 0) _e_view_layout_move_resize_item(li); } E_API void e_view_layout_child_raise (E_View *child) { - e_layout_child_raise(child->eo); + E_View_Layout_Item *li; + + li = e_view_data_get(child, "e_view_layout_data"); + if (!li) return; + if ((!li->layout->items) || (!EINA_INLIST_GET(li)->prev)) return; + li->layout->items = eina_inlist_demote(li->layout->items, EINA_INLIST_GET(li)); + e_view_raise_to_top(child); +} + +E_API void +e_view_layout_layer_set(E_View_Layout *layout, E_Layer layer) +{ + E_View_Layout_Item *li; + E_View_Tree *layer_tree; + E_Canvas_Layer canvas_layer; + + if (!layout) return; + + canvas_layer = e_canvas_util_e_layer_map(layer); + + layer_tree = e_canvas_layer_view_tree_get(e_canvas_get(e_view_tree_view_get(&layout->tree)), canvas_layer); + + EINA_INLIST_FOREACH(layout->items, li) + { + evas_object_layer_set(li->view->eo, canvas_layer); + } + + e_view_reparent(e_view_tree_view_get(&layout->tree), layer_tree); } + +E_API void +e_view_layout_show(E_View_Layout *layout) +{ + E_View *view; + + if (!layout) return; + if (!layout->items) return; + + view = e_view_tree_view_get(&layout->tree); + view->visible = true; + + e_view_show(e_view_rect_view_get(layout->clip)); +} + +E_API void +e_view_layout_hide(E_View_Layout *layout) +{ + E_View *view; + + if (!layout) return; + + view = e_view_tree_view_get(&layout->tree); + view->visible = false; + + e_view_hide(e_view_rect_view_get(layout->clip)); +} + +E_API void +e_view_layout_move(E_View_Layout *layout, int x, int y) +{ + E_View_Layout_Item *li; + int dx, dy; + + if (!layout) return; + + if ((x == layout->x) && (y == layout->y)) return; + + dx = x - layout->x; + dy = y - layout->y; + EINA_INLIST_FOREACH(layout->items, li) + { + int ox, oy; + + e_view_position_get(li->view, &ox, &oy); + e_view_position_set(li->view, ox +dx, oy + dy); + } + layout->x = x; + layout->y = y; +} + +E_API void +e_view_layout_resize(E_View_Layout *layout, int w, int h) +{ + if (!layout) return; + + if ((w == layout->w) && (h == layout->h)) return; + + layout->w = w; + layout->h = h; + layout->changed = 1; + if (layout->frozen <= 0) _e_view_layout_reconfigure(layout); +} + +E_API void +e_view_layout_color_set(E_View_Layout *layout, int r, int g, int b, int a) +{ + if (!layout) return; + + e_view_color_set(e_view_rect_view_get(layout->clip), r, g, b, a); +} + +E_API void +e_view_layout_clip_set(E_View_Layout *layout, E_View *clip) +{ + if (!layout || !clip) return; + + e_view_clip_set(e_view_rect_view_get(layout->clip), clip); +} + +E_API void +e_view_layout_clip_unset(E_View_Layout *layout) +{ + if (!layout) return; + + e_view_clip_unset(e_view_rect_view_get(layout->clip)); +} + diff --git a/src/bin/core/e_view_layout_intern.h b/src/bin/core/e_view_layout_intern.h index a8b527622f..29f0c2b1fd 100644 --- a/src/bin/core/e_view_layout_intern.h +++ b/src/bin/core/e_view_layout_intern.h @@ -4,19 +4,9 @@ #include "e_intern.h" #include "e_view_layout.h" -EINTERN int e_view_layout_freeze (E_View *view); -EINTERN int e_view_layout_thaw (E_View *view); -EINTERN void e_view_layout_virtual_size_get (E_View *view, int *w, int *h); -EINTERN void e_view_layout_child_lower (E_View *view); -EINTERN void e_view_layout_child_raise_above (E_View *view, E_View *above); -EINTERN void e_view_layout_child_lower_below (E_View *view, E_View *below); -EINTERN void e_view_layout_child_geometry_get(E_View *view, int *x, int *y, int *w, int *h); -EINTERN E_View *e_view_layout_top_child_at_xy_get(E_View *view, int x, int y, Eina_Bool vis, const Eina_List *ignore); -EINTERN E_View *e_view_layout_child_below_get(E_View *view); -EINTERN E_View *e_view_layout_child_above_get(E_View *view); -EINTERN E_View *e_view_layout_top_child_get(E_View *view); - -EINTERN void e_view_layout_coord_canvas_to_virtual (E_View *view, int cx, int cy, int *vx, int *vy); -EINTERN void e_view_layout_coord_virtual_to_canvas (E_View *view, int vx, int vy, int *cx, int *cy); +EINTERN int e_view_layout_freeze(E_View_Layout *layout); +EINTERN int e_view_layout_thaw(E_View_Layout *layout); +EINTERN void e_view_layout_virtual_size_get(E_View_Layout *layout, int *w, int *h); +EINTERN void e_view_layout_child_lower(E_View *view); #endif diff --git a/src/include/e_view_layout.h b/src/include/e_view_layout.h index e2330649db..e2301f5ed2 100644 --- a/src/include/e_view_layout.h +++ b/src/include/e_view_layout.h @@ -10,18 +10,27 @@ extern "C" { typedef struct _E_View_Layout E_View_Layout; -E_API E_View_Layout *e_view_layout_try_from_view(E_View *view); -E_API E_View *e_view_layout_view_get(E_View_Layout *layout); - -E_API E_View_Layout *e_view_layout_create (E_View_Tree *parent); -E_API void e_view_layout_virtual_size_set (E_View_Layout *layout, int w, int h); -E_API void e_view_layout_pack (E_View_Layout *layout, E_View *child); -E_API void e_view_layout_unpack (E_View *child); - -E_API Eina_List *e_view_layout_children_get(E_View_Layout *layout); -E_API void e_view_layout_child_move (E_View *child, int x, int y); -E_API void e_view_layout_child_resize(E_View *child, int w, int h); -E_API void e_view_layout_child_raise (E_View *child); +E_API E_View_Layout *e_view_layout_create(E_View_Tree *parent); +E_API void e_view_layout_destroy(E_View_Layout *layout); + +E_API void e_view_layout_virtual_size_set(E_View_Layout *layout, int w, int h); +E_API void e_view_layout_pack(E_View_Layout *layout, E_View *child); +E_API void e_view_layout_unpack(E_View *child); + +E_API Eina_List *e_view_layout_children_get(E_View_Layout *layout); +E_API void e_view_layout_child_move(E_View *child, int x, int y); +E_API void e_view_layout_child_resize(E_View *child, int w, int h); +E_API void e_view_layout_child_raise(E_View *child); + +E_API void e_view_layout_layer_set(E_View_Layout *layout, E_Layer layer); + +E_API void e_view_layout_show(E_View_Layout *layout); +E_API void e_view_layout_hide(E_View_Layout *layout); +E_API void e_view_layout_move(E_View_Layout *layout, int x, int y); +E_API void e_view_layout_resize(E_View_Layout *layout, int w, int h); +E_API void e_view_layout_color_set(E_View_Layout *layout, int r, int g, int b, int a); +E_API void e_view_layout_clip_set(E_View_Layout *layout, E_View *clip); +E_API void e_view_layout_clip_unset(E_View_Layout *layout); #ifdef __cplusplus } diff --git a/tests/Makefile.am b/tests/Makefile.am index ad54e1c07e..dc44e85df3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -8,7 +8,6 @@ enlightenment_source = \ $(top_builddir)/src/bin/core/e_canvas.c \ $(top_builddir)/src/bin/utils/e_map.c \ $(top_builddir)/src/bin/core/e_view_event.c \ - $(top_builddir)/src/bin/windowmgr/e_layout.c \ $(top_builddir)/src/bin/core/e_view_layout.c enlightenment_tests_SOURCES = \ diff --git a/tests/tc-e_view_layout.cpp b/tests/tc-e_view_layout.cpp index 8f4cf0951c..ace0f1a199 100644 --- a/tests/tc-e_view_layout.cpp +++ b/tests/tc-e_view_layout.cpp @@ -38,53 +38,48 @@ public: TEST_F(EViewLayoutTest, Test_E_View_Layout_Create) { Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); + int color[4] = { 255, 255, 255, 255 }; - EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); - EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); - EXPECT_CALL(*evasMock, evas_smart_class_new(_)); - EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_)) - .Times(AnyNumber()); - EXPECT_CALL(*evasMock, evas_object_smart_add(_, _)) + EXPECT_CALL(*evasMock, evas_object_rectangle_add(this->evas)) .Times(1) .WillOnce(Return(obj)); + EXPECT_CALL(*evasMock, evas_object_resize(obj, 200002, 200002)); + EXPECT_CALL(*evasMock, evas_object_move(obj, _, _)) + .Times(2); + EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3])); + EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); E_View_Layout *layout = e_view_layout_create(this->tree); EXPECT_NE(layout, nullptr); - E_View *view = e_view_layout_view_get(layout); - EXPECT_NE(view, nullptr); - EXPECT_CALL(*evasMock, evas_object_smart_data_get(_)) - .Times(AnyNumber()); - EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_)) - .Times(AnyNumber()); - EXPECT_CALL(*evasMock, evas_object_del(_)); EXPECT_CALL(*evasMock, evas_object_data_del(_, _)); - e_view_destroy(view); + EXPECT_CALL(*evasMock, evas_object_del(_)); + e_view_layout_destroy(layout); free(obj); } TEST_F(EViewLayoutTest, Test_E_View_Layout_Pack_UnPack) { - const int color[4] = {0, 0, 0, 0}; - Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); Evas_Object *obj2 = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); + int color[4] = { 255, 255, 255, 255 }; - EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); - EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); - EXPECT_CALL(*evasMock, evas_smart_class_new(_)); - EXPECT_CALL(*evasMock, evas_object_smart_add(_, _)) + EXPECT_CALL(*evasMock, evas_object_rectangle_add(this->evas)) .Times(1) .WillOnce(Return(obj)); + EXPECT_CALL(*evasMock, evas_object_resize(obj, 200002, 200002)); + EXPECT_CALL(*evasMock, evas_object_move(obj, _, _)) + .Times(2); + EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3])); + EXPECT_CALL(*evasMock, evas_object_data_get(_, _)); + EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); E_View_Layout *layout = e_view_layout_create(this->tree); - E_View *view = e_view_layout_view_get(layout); EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)) .Times(AnyNumber()); EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); EXPECT_CALL(*evasMock, evas_object_stack_above(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); + EXPECT_CALL(*evasMock, evas_object_move(_, _, _)) + .Times(3); EXPECT_CALL(*evasMock, evas_object_color_set(_, _, _, _, _)); EXPECT_CALL(*evasMock, evas_object_resize(_, _, _)); EXPECT_CALL(*evasMock, evas_object_rectangle_add(_)) @@ -93,12 +88,10 @@ TEST_F(EViewLayoutTest, Test_E_View_Layout_Pack_UnPack) E_View_Rect* view_rect = e_view_rect_create(this->tree, 1, 1, color); E_View *childView = e_view_rect_view_get(view_rect); - EXPECT_CALL(*evasMock, evas_object_smart_data_get(_)) - .Times(AnyNumber()); - EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_)) - .Times(AnyNumber()); EXPECT_CALL(*evasMock, evas_object_visible_get(_)) .Times(AnyNumber()); + EXPECT_CALL(*evasMock, evas_object_clip_set(_, _)); + EXPECT_CALL(*evasMock, evas_object_raise(_)); e_view_layout_pack(layout, childView); EXPECT_CALL(*evasMock, evas_object_data_get(_, _)) @@ -109,9 +102,10 @@ TEST_F(EViewLayoutTest, Test_E_View_Layout_Pack_UnPack) EXPECT_CALL(*evasMock, evas_object_del(_)); e_view_destroy(childView); - EXPECT_CALL(*evasMock, evas_object_del(_)); + EXPECT_CALL(*evasMock, evas_object_data_get(_, _)); EXPECT_CALL(*evasMock, evas_object_data_del(_, _)); - e_view_destroy(view); + EXPECT_CALL(*evasMock, evas_object_del(_)); + e_view_layout_destroy(layout); free(obj); free(obj2); } @@ -119,51 +113,49 @@ TEST_F(EViewLayoutTest, Test_E_View_Layout_Pack_UnPack) TEST_F(EViewLayoutTest, Test_E_View_Layout_Virtual_Size_Set) { Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); + int color[4] = { 255, 255, 255, 255 }; - EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); - EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); - EXPECT_CALL(*evasMock, evas_smart_class_new(_)); - EXPECT_CALL(*evasMock, evas_object_smart_add(_, _)) + EXPECT_CALL(*evasMock, evas_object_rectangle_add(this->evas)) .Times(1) .WillOnce(Return(obj)); + EXPECT_CALL(*evasMock, evas_object_resize(obj, 200002, 200002)); + EXPECT_CALL(*evasMock, evas_object_move(obj, _, _)) + .Times(2);; + EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3])); + EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); E_View_Layout *layout = e_view_layout_create(this->tree); - E_View *view = e_view_layout_view_get(layout); - EXPECT_CALL(*evasMock, evas_object_smart_data_get(_)) - .Times(AnyNumber()); - EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_)) - .Times(AnyNumber()); e_view_layout_virtual_size_set(layout, 100, 200); - EXPECT_CALL(*evasMock, evas_object_del(_)); EXPECT_CALL(*evasMock, evas_object_data_del(_, _)); - e_view_destroy(view); + EXPECT_CALL(*evasMock, evas_object_del(_)); + e_view_layout_destroy(layout); free(obj); } TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Move) { - const int color[4] = {0, 0, 0, 0}; - Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); Evas_Object *obj2 = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); + int color[4] = { 255, 255, 255, 255 }; - EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); - EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); - EXPECT_CALL(*evasMock, evas_smart_class_new(_)); - EXPECT_CALL(*evasMock, evas_object_smart_add(_, _)) + EXPECT_CALL(*evasMock, evas_object_rectangle_add(this->evas)) .Times(1) .WillOnce(Return(obj)); + EXPECT_CALL(*evasMock, evas_object_resize(obj, 200002, 200002)); + EXPECT_CALL(*evasMock, evas_object_move(obj, _, _)) + .Times(2); + EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3])); + EXPECT_CALL(*evasMock, evas_object_data_get(_, _)); + EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); E_View_Layout *layout = e_view_layout_create(this->tree); - E_View *view = e_view_layout_view_get(layout); EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)) .Times(AnyNumber()); EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); EXPECT_CALL(*evasMock, evas_object_stack_above(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); + EXPECT_CALL(*evasMock, evas_object_move(_, _, _)) + .Times(3); EXPECT_CALL(*evasMock, evas_object_color_set(_, _, _, _, _)); EXPECT_CALL(*evasMock, evas_object_resize(_, _, _)); EXPECT_CALL(*evasMock, evas_object_rectangle_add(_)) @@ -172,12 +164,10 @@ TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Move) E_View_Rect* view_rect = e_view_rect_create(this->tree, 1, 1, color); E_View *childView = e_view_rect_view_get(view_rect); - EXPECT_CALL(*evasMock, evas_object_smart_data_get(_)) - .Times(AnyNumber()); - EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_)) - .Times(AnyNumber()); EXPECT_CALL(*evasMock, evas_object_visible_get(_)) .Times(AnyNumber()); + EXPECT_CALL(*evasMock, evas_object_clip_set(_, _)); + EXPECT_CALL(*evasMock, evas_object_raise(_)); e_view_layout_pack(layout, childView); EXPECT_CALL(*evasMock, evas_object_data_get(_, _)) @@ -194,33 +184,34 @@ TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Move) EXPECT_CALL(*evasMock, evas_object_del(_)); EXPECT_CALL(*evasMock, evas_object_data_del(_, _)); - e_view_destroy(view); + e_view_layout_destroy(layout); free(obj); free(obj2); } TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Resize) { - const int color[4] = {0, 0, 0, 0}; - Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); Evas_Object *obj2 = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); + int color[4] = { 255, 255, 255, 255 }; - EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); - EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); - EXPECT_CALL(*evasMock, evas_smart_class_new(_)); - EXPECT_CALL(*evasMock, evas_object_smart_add(_, _)) + EXPECT_CALL(*evasMock, evas_object_rectangle_add(this->evas)) .Times(1) .WillOnce(Return(obj)); + EXPECT_CALL(*evasMock, evas_object_resize(obj, 200002, 200002)); + EXPECT_CALL(*evasMock, evas_object_move(obj, _, _)) + .Times(2); + EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3])); + EXPECT_CALL(*evasMock, evas_object_data_get(_, _)); + EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); E_View_Layout *layout = e_view_layout_create(this->tree); - E_View *view = e_view_layout_view_get(layout); EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)) .Times(AnyNumber()); EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); EXPECT_CALL(*evasMock, evas_object_stack_above(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); + EXPECT_CALL(*evasMock, evas_object_move(_, _, _)) + .Times(3); EXPECT_CALL(*evasMock, evas_object_color_set(_, _, _, _, _)); EXPECT_CALL(*evasMock, evas_object_resize(_, _, _)); EXPECT_CALL(*evasMock, evas_object_rectangle_add(_)) @@ -229,12 +220,10 @@ TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Resize) E_View_Rect* view_rect = e_view_rect_create(this->tree, 1, 1, color); E_View *childView = e_view_rect_view_get(view_rect); - EXPECT_CALL(*evasMock, evas_object_smart_data_get(_)) - .Times(AnyNumber()); - EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_)) - .Times(AnyNumber()); EXPECT_CALL(*evasMock, evas_object_visible_get(_)) .Times(AnyNumber()); + EXPECT_CALL(*evasMock, evas_object_clip_set(_, _)); + EXPECT_CALL(*evasMock, evas_object_raise(_)); e_view_layout_pack(layout, childView); EXPECT_CALL(*evasMock, evas_object_data_get(_, _)) @@ -251,33 +240,34 @@ TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Resize) EXPECT_CALL(*evasMock, evas_object_del(_)); EXPECT_CALL(*evasMock, evas_object_data_del(_, _)); - e_view_destroy(view); + e_view_layout_destroy(layout); free(obj); free(obj2); } TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Raise) { - const int color[4] = {0, 0, 0, 0}; - Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); Evas_Object *obj2 = (Evas_Object *)malloc(EVAS_OBJECT_SIZE); + int color[4] = { 255, 255, 255, 255 }; - EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); - EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); - EXPECT_CALL(*evasMock, evas_smart_class_new(_)); - EXPECT_CALL(*evasMock, evas_object_smart_add(_, _)) + EXPECT_CALL(*evasMock, evas_object_rectangle_add(this->evas)) .Times(1) .WillOnce(Return(obj)); + EXPECT_CALL(*evasMock, evas_object_resize(obj, 200002, 200002)); + EXPECT_CALL(*evasMock, evas_object_move(obj, _, _)) + .Times(2); + EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3])); + EXPECT_CALL(*evasMock, evas_object_data_get(_, _)); + EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)); E_View_Layout *layout = e_view_layout_create(this->tree); - E_View *view = e_view_layout_view_get(layout); EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _)) .Times(AnyNumber()); EXPECT_CALL(*evasMock, evas_object_layer_set(_, _)); EXPECT_CALL(*evasMock, evas_object_stack_above(_, _)); - EXPECT_CALL(*evasMock, evas_object_move(_, _, _)); + EXPECT_CALL(*evasMock, evas_object_move(_, _, _)) + .Times(3); EXPECT_CALL(*evasMock, evas_object_color_set(_, _, _, _, _)); EXPECT_CALL(*evasMock, evas_object_resize(_, _, _)); EXPECT_CALL(*evasMock, evas_object_rectangle_add(_)) @@ -286,12 +276,10 @@ TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Raise) E_View_Rect* view_rect = e_view_rect_create(this->tree, 1, 1, color); E_View *childView = e_view_rect_view_get(view_rect); - EXPECT_CALL(*evasMock, evas_object_smart_data_get(_)) - .Times(AnyNumber()); - EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_)) - .Times(AnyNumber()); EXPECT_CALL(*evasMock, evas_object_visible_get(_)) .Times(AnyNumber()); + EXPECT_CALL(*evasMock, evas_object_clip_set(_, _)); + EXPECT_CALL(*evasMock, evas_object_raise(_)); e_view_layout_pack(layout, childView); EXPECT_CALL(*evasMock, evas_object_data_get(_, _)) @@ -308,7 +296,7 @@ TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Raise) EXPECT_CALL(*evasMock, evas_object_del(_)); EXPECT_CALL(*evasMock, evas_object_data_del(_, _)); - e_view_destroy(view); + e_view_layout_destroy(layout); free(obj); free(obj2); }