e_view_layout: Refactory e_view_layout 43/318143/2
authorJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 10 Jan 2025 08:41:31 +0000 (17:41 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 13 Jan 2025 11:04:37 +0000 (11:04 +0000)
AS IS
Wrapping e_layout.

TO BE
Replace e_layout without evas object.

Change-Id: I8786aec0605fb509eacc958ec5f8135364f82c7a

src/bin/core/e_view_intern.h
src/bin/core/e_view_layout.c
src/bin/core/e_view_layout_intern.h
src/include/e_view_layout.h
tests/Makefile.am
tests/tc-e_view_layout.cpp

index 40042b65c2b1a0df698a78ce3933ee0145c365f9..5604e72c0021e548411bb3cd8c35a1bc13d0cb34 100644 (file)
@@ -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
index 6d5f9c86dbe8680d1cfecd357ff492df5bf6862e..b4c259e779b1620dd7e3f093bb94dcf8080e72fc 100644 (file)
 #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));
+}
+
index a8b527622f9eadf87c6308384cb5aecb6c0fd042..29f0c2b1fd8f0c83e990bd7da7cec6767f3a645d 100644 (file)
@@ -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
index e2330649dbabc8a724e37d25e98884fc07138352..e2301f5ed22780cc9e5799e8da2690b610f92f0f 100644 (file)
@@ -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
 }
index ad54e1c07e91bc3923a84d48a60ff63d7622e5c9..dc44e85df38e834b811f870be61e503bf1976777 100644 (file)
@@ -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 = \
index 8f4cf0951ced186c1e5f12173b4b6dc36de8bdf8..ace0f1a19930470316e4a4c2f1d7b8acebb8c82b 100644 (file)
@@ -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);
 }