e_service_quickpanel: Do not use smart object for quickpanel mover 05/320905/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Mon, 10 Mar 2025 06:25:06 +0000 (15:25 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 11 Mar 2025 00:58:52 +0000 (09:58 +0900)
Use e_view_layout intead e_layout.

Change-Id: If8cdfaf0a4fe1163ff63f79d2bfbe97817e116f3

src/bin/windowmgr/services/e_service_quickpanel.c

index 4907d8d4bbbda4d6a9429d843410e9cf875295c7..9729deb0548e44e8e27b03513749ee892a5e1dcb 100644 (file)
@@ -4,19 +4,19 @@
 #include "e_pixmap_intern.h"
 #include "e_policy_intern.h"
 #include "e_policy_wl_intern.h"
+#include "e_tizen_indicator_intern.h"
 #include "e_policy_private_data.h"
 #include "e_client_intern.h"
 #include "e_comp_object_intern.h"
-#include "e_layout_intern.h"
+#include "e_canvas_intern.h"
+#include "e_comp_canvas_intern.h"
+#include "e_view_rect.h"
 #include "e_view_intern.h"
 #include "e_view_client_intern.h"
-#include "e_tizen_indicator_intern.h"
+#include "e_view_layout_intern.h"
+#include "e_map_intern.h"
 
 #define SMART_NAME            "quickpanel_object"
-#define INTERNAL_ENTRY                       \
-   Mover_Data *md;                           \
-   md = evas_object_smart_data_get(obj);     \
-   if (!md) return
 
 #define QP_SHOW(qp)                          \
 do                                           \
@@ -30,8 +30,8 @@ do                                           \
         if (qp->bg_rect)                     \
           {                                  \
              ELOGF("QUICKPANEL", "SHOW BG_RECT...", qp->ec);      \
-             evas_object_stack_below(qp->bg_rect, qp->ec->frame); \
-             evas_object_show(qp->bg_rect);  \
+             e_view_place_below(e_view_rect_view_get(qp->bg_rect), e_view_client_view_get(e_client_view_get(qp->ec))); \
+             e_view_show(e_view_rect_view_get(qp->bg_rect));      \
           }                                  \
      }                                       \
 } while (0)
@@ -48,7 +48,7 @@ do                                           \
         if (qp->bg_rect)                     \
           {                                  \
              ELOGF("QUICKPANEL", "HIDE BG_RECT...", qp->ec);  \
-             evas_object_hide(qp->bg_rect);  \
+             e_view_hide(e_view_rect_view_get(qp->bg_rect));  \
           }                                  \
      }                                       \
 } while (0)
@@ -82,7 +82,7 @@ do                                           \
 } while(0)
 
 typedef struct _E_Policy_Quickpanel E_Policy_Quickpanel;
-typedef struct _Mover_Data Mover_Data;
+typedef struct _E_Policy_Quickpanel_Mover E_Policy_Quickpanel_Mover;
 
 typedef struct _E_QP_Client E_QP_Client;
 
@@ -94,10 +94,10 @@ struct _E_Policy_Quickpanel
 
    E_Client *below;
    E_Client *stacking;
-   Evas_Object *mover;
+   E_Policy_Quickpanel_Mover *mover;
    Evas_Object *indi_obj;
    Evas_Object *handler_obj;
-   Evas_Object *bg_rect;
+   E_View_Rect *bg_rect;
 
    Eina_List *intercept_hooks;
    Eina_List *hooks;
@@ -147,18 +147,20 @@ struct _E_Policy_Quickpanel
    struct wl_listener move_listener;
 };
 
-struct _Mover_Data
+struct _E_Policy_Quickpanel_Mover
 {
    E_Policy_Quickpanel *qp;
    E_Client *ec;
 
-   Evas_Object *smart_obj; //smart object
-   Evas_Object *qp_layout_obj; // quickpanel's e_layout_object
-   Evas_Object *handler_mirror_obj; // quickpanel handler mirror object
-   Evas_Object *base_clip; // clipper for quickapnel base object
-   Evas_Object *handler_clip; // clipper for quickpanel handler object
+   E_View_Layout *qp_layout; // quickpanel's e_layout_object
+   E_View *handler_mirror; // quickpanel handler mirror object
+   E_View_Rect *base_clip; // clipper for quickapnel base object
+   E_View_Rect *handler_clip; // clipper for quickpanel handler object
 
-   Eina_Rectangle handler_rect;
+   int x; /**< top-left x coordinate of rectangle */
+   int y; /**< top-left y coordinate of rectangle */
+   int w; /**< width of rectangle */
+   int h; /**< height of rectangle */
 };
 
 struct _E_QP_Client
@@ -174,7 +176,6 @@ struct _E_QP_Client
 };
 
 static Eina_List *qp_services = NULL; /* list of E_Policy_Quickpanel for quickpanel services */
-static Evas_Smart *_mover_smart = NULL;
 static Eina_Bool _changed = EINA_FALSE;
 static E_QP_Mgr_Funcs *qp_mgr_funcs = NULL;
 
@@ -246,139 +247,77 @@ _quickpanel_get_with_client_type(E_QP_Client *qp_client)
 }
 
 static void
-_mover_intercept_show(void *data, Evas_Object *obj)
+_e_qp_mover_element_destroy(E_Policy_Quickpanel_Mover *mover)
 {
-   Mover_Data *md;
-   E_Client *ec;
-   E_Desk *desk;
-   Evas *e;
-   E_Map *map;
-   E_Map *map2;
-   Evas_Object *effect_obj;
-   E_Policy_Quickpanel *qp;
-
-   md = data;
-   qp = md->qp;
-   ec = md->ec;
-
-   /* force update */
-   e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
-   e_view_client_dirty(e_client_view_get(ec));
-   e_view_client_render(e_client_view_get(ec));
+   if (!mover) return;
 
-   // desk-zoom-set apply map on all e_desk's smart_data(clients)
-   // to properly pack a quickpanel window on the mover's e_layout_object
-   // (to became a member of mover) it shouldn't be in e_desk's clists.
-   // because mover (also smart obj) is a member of e_desk
-   // otherwize, desk-zoom will mutiplied on a ec again.
-   if (e_config->qp_add_on_desk_smart)
+   if (mover->base_clip)
      {
-        desk = e_desk_current_get(qp->zone);
-        e_desk_client_remove(desk, ec);
+        e_view_clip_unset(e_view_rect_view_get(mover->base_clip));
+        e_view_layout_unpack(e_view_rect_view_get(mover->base_clip));
+        e_view_destroy(e_view_rect_view_get(mover->base_clip));
+        mover->base_clip = NULL;
      }
 
-   e_layout_pack(md->qp_layout_obj, ec->frame);
-
-  // create base_clip
-   e = evas_object_evas_get(obj);
-   md->base_clip = evas_object_rectangle_add(e);
-   e_layout_pack(md->qp_layout_obj, md->base_clip);
-   e_layout_child_move(md->base_clip, 0, 0);
-   e_layout_child_resize(md->base_clip, ec->w, ec->h);
-   evas_object_color_set(md->base_clip, 255, 255, 255, 255);
-   evas_object_show(md->base_clip);
-   evas_object_clip_set(ec->frame, md->base_clip);
-
-   // create handler_mirror_obj
-   md->handler_mirror_obj =  e_comp_object_util_mirror_add(ec->frame);
-   effect_obj = e_comp_object_effect_object_get(ec->frame);
-   if (evas_object_map_enable_get(effect_obj))
+   if (mover->handler_clip)
      {
-        map = e_comp_object_map_get(effect_obj);
-        map2 = e_map_dup(map);
-        e_comp_object_map_set(md->handler_mirror_obj, map2);
-        e_comp_object_map_enable_set(md->handler_mirror_obj, EINA_TRUE);
-        e_map_free(map2);
-        e_map_free(map);
+        e_view_clip_unset(e_view_rect_view_get(mover->handler_clip));
+        e_view_layout_unpack(e_view_rect_view_get(mover->handler_clip));
+        e_view_destroy(e_view_rect_view_get(mover->handler_clip));
+        mover->handler_clip = NULL;
      }
 
-   e_layout_pack(md->qp_layout_obj, md->handler_mirror_obj);
-   e_layout_child_move(md->handler_mirror_obj, 0, 0);
-   e_layout_child_resize(md->handler_mirror_obj, ec->w, ec->h);
-   evas_object_show(md->handler_mirror_obj);
-
-   // create handler_clip
-   md->handler_clip = evas_object_rectangle_add(e);
-   e_layout_pack(md->qp_layout_obj, md->handler_clip);
-   e_layout_child_move(md->handler_clip, md->handler_rect.x, md->handler_rect.y);
-   e_layout_child_resize(md->handler_clip, md->handler_rect.w, md->handler_rect.h);
-   if (e_config->qp_handler.use_alpha)
-     evas_object_color_set(md->handler_clip, 255, 255, 255, e_config->qp_handler.alpha);
-   else
-     evas_object_color_set(md->handler_clip, 255, 255, 255, 255);
-   evas_object_show(md->handler_clip);
-   evas_object_clip_set(md->handler_mirror_obj, md->handler_clip);
-
-   evas_object_show(obj);
-
-   if (e_config->qp_add_on_desk_smart)
+   if (mover->handler_mirror)
      {
-        desk = e_desk_current_get(qp->zone);
-        e_desk_smart_member_add(desk, obj);
+        e_view_layout_unpack(mover->handler_mirror);
+        e_view_destroy(mover->handler_mirror);
+        mover->handler_mirror = NULL;
      }
 }
 
-static void
-_mover_smart_add(Evas_Object *obj)
+E_Policy_Quickpanel_Mover *
+_e_qp_mover_create(E_Policy_Quickpanel *qp)
 {
-   Mover_Data *md;
+   E_Policy_Quickpanel_Mover *mover = NULL;
+   E_View_Tree *tree = NULL;
 
-   md = E_NEW(Mover_Data, 1);
-   if (EINA_UNLIKELY(!md))
-     return;
+   mover = E_NEW(E_Policy_Quickpanel_Mover, 1);
+   if (!mover) return NULL;
+   mover->qp = qp;
+   mover->ec = qp->ec;
+
+   tree = e_canvas_layer_view_tree_get(e_comp_canvas_get(), e_canvas_util_e_layer_map(qp->ec->layer));
+   if (!tree) goto fail;
+   mover->qp_layout = e_view_layout_create(tree);
+   if (!mover->qp_layout) goto fail;
 
-   md->smart_obj = obj;
-   md->qp_layout_obj = e_layout_add(evas_object_evas_get(obj));
-   evas_object_color_set(md->qp_layout_obj, 255, 255, 255, 255);
-   evas_object_smart_member_add(md->qp_layout_obj, md->smart_obj);
+   e_view_layout_color_set(mover->qp_layout, 255, 255, 255, 255);
+   e_view_layout_move(mover->qp_layout, -1, -1);
 
-   evas_object_smart_data_set(obj, md);
+   return mover;
 
-   evas_object_move(obj, -1 , -1);
-   evas_object_intercept_show_callback_add(obj, _mover_intercept_show, md);
+fail:
+   E_FREE(mover);
+   return NULL;
 }
 
 static void
-_mover_smart_del(Evas_Object *obj)
+_e_qp_mover_destroy(E_Policy_Quickpanel_Mover *mover)
 {
    E_Client *ec;
-   E_Desk *desk;
-   E_Policy_Quickpanel *qp;
 
-   INTERNAL_ENTRY;
+   if (!mover) return;
 
-   qp = md->qp;
-   ec = md->ec;
-   if (md->base_clip)
-     {
-        evas_object_clip_unset(md->base_clip);
-        e_layout_unpack(md->base_clip);
-        evas_object_del(md->base_clip);
-     }
-   if (md->handler_clip)
-     {
-        evas_object_clip_unset(md->handler_clip);
-        e_layout_unpack(md->handler_clip);
-        evas_object_del(md->handler_clip);
-     }
-   if (md->handler_mirror_obj)
+   ec = mover->ec;
+
+   _e_qp_mover_element_destroy(mover);
+
+   if (mover->qp_layout)
      {
-        e_layout_unpack(md->handler_mirror_obj);
-        evas_object_del(md->handler_mirror_obj);
+        e_view_layout_destroy(mover->qp_layout);
+        mover->qp_layout = NULL;
      }
 
-   if (md->qp_layout_obj) evas_object_del(md->qp_layout_obj);
-
    e_view_color_set(e_view_client_view_get(e_client_view_get(ec)), ec->netwm.opacity, ec->netwm.opacity, ec->netwm.opacity, ec->netwm.opacity);
 
    e_comp_client_override_del(ec);
@@ -391,105 +330,133 @@ _mover_smart_del(Evas_Object *obj)
    e_view_client_dirty(e_client_view_get(ec));
    e_view_client_render(e_client_view_get(ec));
 
-   e_layout_unpack(ec->frame);
-
-   if (e_config->qp_add_on_desk_smart)
-     {
-        desk = e_desk_current_get(qp->zone);
-        e_desk_smart_member_add(desk, ec->frame);
-     }
+   e_view_layout_unpack(e_view_client_view_get(e_client_view_get(ec)));
 
-   free(md);
+   E_FREE(mover);
 }
 
 static void
-_mover_smart_show(Evas_Object *obj)
+_e_qp_mover_show(E_Policy_Quickpanel_Mover *mover)
 {
-   INTERNAL_ENTRY;
+   E_Client *ec;
+   E_Map *map;
+   E_Map *map2;
+   int color[4] = { 255, 255, 255, 255 };
+   E_View_Tree *tree = NULL;
+   E_View *effect = NULL;
 
-   evas_object_show(md->qp_layout_obj);
-}
+   if (!mover) return;
 
-static void
-_mover_smart_hide(Evas_Object *obj)
-{
-   INTERNAL_ENTRY;
+   ec = mover->ec;
+
+   tree = e_canvas_layer_view_tree_get(e_comp_canvas_get(), E_CANVAS_LAYER_CLIENT_NORMAL);
+   if (!tree) return;
+
+   /* force update */
+   e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+   e_view_client_dirty(e_client_view_get(ec));
+   e_view_client_render(e_client_view_get(ec));
+
+   e_view_layout_pack(mover->qp_layout, e_view_client_view_get(e_client_view_get(ec)));
+
+   // create base_clip
+   mover->base_clip = e_view_rect_create(tree, 1, 1, color);
+   if (!mover->base_clip) return;
+
+   e_view_layout_pack(mover->qp_layout, e_view_rect_view_get(mover->base_clip));
+   e_view_layout_child_move(e_view_rect_view_get(mover->base_clip), 0, 0);
+   e_view_layout_child_resize(e_view_rect_view_get(mover->base_clip), ec->w, ec->h);
+   e_view_show(e_view_rect_view_get(mover->base_clip));
+   e_view_clip_set(e_view_client_view_get(e_client_view_get(ec)), e_view_rect_view_get(mover->base_clip));
+
+   // create handler_mirror
+   mover->handler_mirror = e_view_client_util_mirror_add(e_client_view_get(ec));
+   if (!mover->handler_mirror) goto fail;
+   effect = e_view_client_effect_object_get(e_client_view_get(ec));
+   if (e_view_map_enable_get(effect))
+     {
+        map = e_map_get_from_comp_object(effect->eo);
+        map2 = e_map_dup(map);
+        e_view_map_set(mover->handler_mirror, map2);
+        e_view_map_enable_set(mover->handler_mirror, true);
+        e_map_free(map2);
+        e_map_free(map);
+     }
+   e_view_layout_pack(mover->qp_layout, mover->handler_mirror);
+   e_view_layout_child_move(mover->handler_mirror, 0, 0);
+   e_view_layout_child_resize(mover->handler_mirror, ec->w, ec->h);
+   e_view_show(mover->handler_mirror);
+
+   // create handler_clip
+   mover->handler_clip = e_view_rect_create(tree, 1, 1, color);
+   if (!mover->handler_clip) goto fail;
+   e_view_layout_pack(mover->qp_layout, e_view_rect_view_get(mover->handler_clip));
+   e_view_layout_child_move(e_view_rect_view_get(mover->handler_clip), mover->x, mover->y);
+   e_view_layout_child_resize(e_view_rect_view_get(mover->handler_clip), mover->w, mover->h);
+   if (e_config->qp_handler.use_alpha)
+     e_view_rect_color_set(mover->handler_clip, 255, 255, 255, e_config->qp_handler.alpha);
+   e_view_show(e_view_rect_view_get(mover->handler_clip));
+   e_view_clip_set(mover->handler_mirror, e_view_rect_view_get(mover->handler_clip));
+
+   e_view_layout_show(mover->qp_layout);
+
+   return;
 
-   evas_object_hide(md->qp_layout_obj);
+fail:
+   _e_qp_mover_element_destroy(mover);
 }
 
+#if 0
 static void
-_mover_smart_move(Evas_Object *obj, int x, int y)
+_e_qp_mover_hide(E_Policy_Quickpanel_Mover *mover)
 {
-   INTERNAL_ENTRY;
+   if (!mover) return;
 
-   evas_object_move(md->qp_layout_obj, x, y);
+   e_view_layout_hide(mover->qp_layout);
 }
+#endif
 
 static void
-_mover_smart_resize(Evas_Object *obj, int w, int h)
+_e_qp_mover_move(E_Policy_Quickpanel_Mover *mover, int x, int y)
 {
-   INTERNAL_ENTRY;
+   if (!mover) return;
 
-   e_layout_virtual_size_set(md->qp_layout_obj, w, h);
-   evas_object_resize(md->qp_layout_obj, w, h);
+   mover->x = x;
+   mover->y = y;
+   e_view_layout_move(mover->qp_layout, x, y);
 }
 
 static void
-_mover_smart_init(void)
+_e_qp_mover_resize(E_Policy_Quickpanel_Mover *mover, int w, int h)
 {
-   if (_mover_smart) return;
-   {
-      static const Evas_Smart_Class sc =
-      {
-         SMART_NAME,
-         EVAS_SMART_CLASS_VERSION,
-         _mover_smart_add,
-         _mover_smart_del,
-         _mover_smart_move,
-         _mover_smart_resize,
-         _mover_smart_show,
-         _mover_smart_hide,
-         NULL, /* color_set */
-         NULL, /* clip_set */
-         NULL, /* clip_unset */
-         NULL, /* calculate */
-         NULL, /* member_add */
-         NULL, /* member_del */
-
-         NULL, /* parent */
-         NULL, /* callbacks */
-         NULL, /* interfaces */
-         NULL  /* data */
-      };
-      _mover_smart = evas_smart_class_new(&sc);
-   }
+   if (!mover) return;
+
+   mover->w = w;
+   mover->h = h;
+   e_view_layout_virtual_size_set(mover->qp_layout, w, h);
+   e_view_layout_resize(mover->qp_layout, w, h);
 }
 
-static Evas_Object *
+static void
 _e_qp_srv_mover_new(E_Policy_Quickpanel *qp)
 {
-   Evas_Object *mover;
-   Mover_Data *md;
+   E_Policy_Quickpanel_Mover *mover = NULL;
    int x, y, w, h;
    E_Desk *desk;
    int tx, ty;
 
    e_comp_client_override_add(qp->ec);
 
-   _mover_smart_init();
-   mover = evas_object_smart_add(evas_object_evas_get(qp->ec->frame), _mover_smart);
-
-   /* Should setup 'md' before call evas_object_show() */
-   md = evas_object_smart_data_get(mover);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(md, NULL);
-
-   md->ec = qp->ec;
+   mover = _e_qp_mover_create(qp);
+   if (!mover) return;
 
-   evas_object_layer_set(md->smart_obj, qp->ec->layer);
+   qp->mover = mover;
 
    e_service_region_rectangle_get(qp->handler_obj, qp->rotation, &x, &y, &w, &h);
-   EINA_RECTANGLE_SET(&md->handler_rect, x, y, w, h);
+   mover->x = x;
+   mover->y = y;
+   mover->w = w;
+   mover->h = h;
 
    tx = qp->zone->x;
    ty = qp->zone->y;
@@ -499,58 +466,54 @@ _e_qp_srv_mover_new(E_Policy_Quickpanel *qp)
         tx = desk->geom.x;
         ty = desk->geom.y;
      }
-
-   evas_object_move(mover, tx, ty);
-   evas_object_resize(mover, qp->ec->w, qp->ec->h);
-   evas_object_show(mover);
-
-   qp->mover = mover;
-
-   return mover;
+   _e_qp_mover_move(mover, tx, ty);
+   _e_qp_mover_resize(mover, qp->ec->w, qp->ec->h);
+   _e_qp_mover_show(mover);
 }
 
 static Eina_Bool
 _e_qp_srv_mover_object_relocate(E_Policy_Quickpanel *qp, int x, int y)
 {
    E_Client *ec;
-   Mover_Data *md;
    int tx, ty, tw, th;
    E_Map *map;
    E_Map *map2 = NULL;
-   Evas_Object *effect_obj;
+   E_Policy_Quickpanel_Mover *mover;
+   E_View *effect;
    int map_count, i;
 
+   if (!qp->mover) return EINA_FALSE;
+   mover = qp->mover;
    ec = qp->ec;
 
-   md = evas_object_smart_data_get(qp->mover);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(md, EINA_FALSE);
+   effect = e_view_client_effect_object_get(e_client_view_get(ec));
+   if (!effect) return EINA_FALSE;
 
-   effect_obj = e_comp_object_effect_object_get(ec->frame);
-   if (evas_object_map_enable_get(effect_obj))
+   if (e_view_map_enable_get(effect))
      {
-        map = e_comp_object_map_get(effect_obj);
+        map = e_map_get_from_comp_object(effect->eo);
         map2 = e_map_dup(map);
         e_map_free(map);
      }
    else
      {
-        e_comp_object_map_set(md->handler_mirror_obj, NULL);
-        e_comp_object_map_enable_set(md->handler_mirror_obj, EINA_FALSE);
+        e_view_map_set(mover->handler_mirror, NULL);
+        e_view_map_enable_set(mover->handler_mirror, false);
      }
 
-   evas_object_geometry_get(qp->mover, &tx, &ty, &tw, &th);
+   e_view_layout_geometry_get(mover->qp_layout, &tx, &ty, &tw, &th);
 
    switch (qp->rotation)
      {
       case E_POLICY_ANGLE_MAP_90:
          if (x < tx) goto ret_false;
-         if ((x + md->handler_rect.w) > (tx+tw)) goto ret_false;
+         if ((x + mover->w) > (tx + tw)) goto ret_false;
 
-         e_layout_child_move(md->base_clip, 0, 0);
-         e_layout_child_resize(md->base_clip, x - tx, ec->h);
+         e_view_layout_child_move(e_view_rect_view_get(mover->base_clip), 0, 0);
+         e_view_layout_child_resize(e_view_rect_view_get(mover->base_clip), x - tx, ec->h);
 
-         e_layout_child_move(md->handler_mirror_obj, x - tx - ec->w + md->handler_rect.w, 0);
-         e_layout_child_move(md->handler_clip, x - tx, 0);
+         e_view_layout_child_move(mover->handler_mirror, x - tx - ec->w + mover->w, 0);
+         e_view_layout_child_move(e_view_rect_view_get(mover->handler_clip), x - tx, 0);
 
          if (map2)
            {
@@ -559,20 +522,20 @@ _e_qp_srv_mover_object_relocate(E_Policy_Quickpanel *qp, int x, int y)
                 {
                    int mx, my, mz;
                    e_map_point_coord_get(map2, i, &mx, &my, &mz);
-                   e_map_point_coord_set(map2, i, mx + (x - tx - ec->w + md->handler_rect.w), my, mz);
+                   e_map_point_coord_set(map2, i, mx + (x - tx - ec->w + mover->w), my, mz);
                 }
            }
          break;
 
       case E_POLICY_ANGLE_MAP_180:
-         if (y > (ty+th)) goto ret_false;
-         if ((y - md->handler_rect.h) < ty) goto ret_false;
+         if (y > (ty + th)) goto ret_false;
+         if ((y - mover->h) < ty) goto ret_false;
 
-         e_layout_child_move(md->base_clip, 0, y - ty);
-         e_layout_child_resize(md->base_clip, ec->w, ty + ec->h - y);
+         e_view_layout_child_move(e_view_rect_view_get(mover->base_clip), 0, y - ty);
+         e_view_layout_child_resize(e_view_rect_view_get(mover->base_clip), ec->w, ty + ec->h - y);
 
-         e_layout_child_move(md->handler_mirror_obj, 0, y - ty - md->handler_rect.h);
-         e_layout_child_move(md->handler_clip, 0, y - ty - md->handler_rect.h);
+         e_view_layout_child_move(mover->handler_mirror, 0, y - ty - mover->h);
+         e_view_layout_child_move(e_view_rect_view_get(mover->handler_clip), 0, y - ty - mover->h);
 
          if (map2)
            {
@@ -581,20 +544,20 @@ _e_qp_srv_mover_object_relocate(E_Policy_Quickpanel *qp, int x, int y)
                 {
                    int mx, my, mz;
                    e_map_point_coord_get(map2, i, &mx, &my, &mz);
-                   e_map_point_coord_set(map2, i, mx, my + (y - ty - md->handler_rect.h), mz);
+                   e_map_point_coord_set(map2, i, mx, my + (y - ty - mover->h), mz);
                 }
            }
          break;
 
       case E_POLICY_ANGLE_MAP_270:
-         if ((x + md->handler_rect.w) > (tx+tw)) goto ret_false;
-         if ((x - md->handler_rect.w) < tx) goto ret_false;
+         if ((x + mover->w) > (tx + tw)) goto ret_false;
+         if ((x - mover->w) < tx) goto ret_false;
 
-         e_layout_child_move(md->base_clip, x - tx, 0);
-         e_layout_child_resize(md->base_clip, tx + ec->w - x, ec->h);
+         e_view_layout_child_move(e_view_rect_view_get(mover->base_clip), x - tx, 0);
+         e_view_layout_child_resize(e_view_rect_view_get(mover->base_clip), tx + ec->w - x, ec->h);
 
-         e_layout_child_move(md->handler_mirror_obj, x - tx - md->handler_rect.w, 0);
-         e_layout_child_move(md->handler_clip, x - tx - md->handler_rect.w, 0);
+         e_view_layout_child_move(mover->handler_mirror, x - tx - mover->w, 0);
+         e_view_layout_child_move(e_view_rect_view_get(mover->handler_clip), x - tx - mover->w, 0);
 
          if (map2)
            {
@@ -603,20 +566,20 @@ _e_qp_srv_mover_object_relocate(E_Policy_Quickpanel *qp, int x, int y)
                 {
                    int mx, my, mz;
                    e_map_point_coord_get(map2, i, &mx, &my, &mz);
-                   e_map_point_coord_set(map2, i, mx + (x - tx - md->handler_rect.w), my, mz);
+                   e_map_point_coord_set(map2, i, mx + (x - tx - mover->w), my, mz);
                 }
            }
          break;
 
       default:
          if (y < ty) goto ret_false;
-         if ((y + md->handler_rect.h) > (ty+th)) goto ret_false;
+         if ((y + mover->h) > (ty + th)) goto ret_false;
 
-         e_layout_child_move(md->base_clip, 0, 0);
-         e_layout_child_resize(md->base_clip, ec->w, y - ty);
+         e_view_layout_child_move(e_view_rect_view_get(mover->base_clip), 0, 0);
+         e_view_layout_child_resize(e_view_rect_view_get(mover->base_clip), ec->w, y - ty);
 
-         e_layout_child_move(md->handler_mirror_obj, 0, y - ty - ec->h + md->handler_rect.h);
-         e_layout_child_move(md->handler_clip, 0, y - ty);
+         e_view_layout_child_move(mover->handler_mirror, 0, y - ty - ec->h + mover->h);
+         e_view_layout_child_move(e_view_rect_view_get(mover->handler_clip), 0, y - ty);
 
          if (map2)
            {
@@ -625,15 +588,15 @@ _e_qp_srv_mover_object_relocate(E_Policy_Quickpanel *qp, int x, int y)
                 {
                    int mx, my, mz;
                    e_map_point_coord_get(map2, i, &mx, &my, &mz);
-                   e_map_point_coord_set(map2, i, mx, my + (y - ty - ec->h + md->handler_rect.h), mz);
+                   e_map_point_coord_set(map2, i, mx, my + (y - ty - ec->h + mover->h), mz);
                 }
            }
      }
 
    if (map2)
      {
-        e_comp_object_map_set(md->handler_mirror_obj, map2);
-        e_comp_object_map_enable_set(md->handler_mirror_obj, EINA_TRUE);
+        e_view_map_set(mover->handler_mirror, map2);
+        e_view_map_enable_set(mover->handler_mirror, true);
         e_map_free(map2);
      }
 
@@ -644,16 +607,6 @@ ret_false:
    return EINA_FALSE;
 }
 
-static void
-_e_qp_srv_mover_cb_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
-   E_Policy_Quickpanel *qp;
-
-   qp = data;
-   QP_VISIBLE_SET(qp, qp->effect.final_visible_state);
-   E_FREE_FUNC(qp->effect.animator, ecore_animator_del);
-}
-
 static void
 _e_qp_srv_event_free(void *d EINA_UNUSED, E_Event_Client *ev)
 {
@@ -688,8 +641,8 @@ _e_qp_srv_effect_finish_job_end(E_Policy_Quickpanel *qp)
 
    if (qp->mover)
      {
-        evas_object_event_callback_del(qp->mover, EVAS_CALLBACK_DEL, _e_qp_srv_mover_cb_del);
-        E_FREE_FUNC(qp->mover, evas_object_del);
+        _e_qp_mover_destroy(qp->mover);
+        qp->mover = NULL;
      }
 
    QP_VISIBLE_SET(qp, qp->effect.final_visible_state);
@@ -848,16 +801,11 @@ _e_qp_srv_effect_finish_job_start(E_Policy_Quickpanel *qp, Eina_Bool visible)
    qp->effect.final_visible_state = visible;
    qp->effect.animator =
       ecore_animator_timeline_add(duration, _e_qp_srv_effect_finish_job_op, qp);
-
-   if (qp->mover)
-     evas_object_event_callback_add(qp->mover, EVAS_CALLBACK_DEL, _e_qp_srv_mover_cb_del, qp);
 }
 
 static void
 _e_qp_srv_effect_finish_job_stop(E_Policy_Quickpanel *qp)
 {
-   if (qp->mover)
-     evas_object_event_callback_del(qp->mover, EVAS_CALLBACK_DEL, _e_qp_srv_mover_cb_del);
    E_FREE_FUNC(qp->effect.animator, ecore_animator_del);
 
    if (qp->effect.final_visible_state)
@@ -1037,7 +985,7 @@ _e_qp_srv_qp_move(E_Policy_Quickpanel *qp, int x, int y)
         else if (weight < 0) weight = 0;
 
         dim = (int)(178 * weight);
-        evas_object_color_set(qp->bg_rect, 0, 0, 0, dim);
+        e_view_rect_color_set(qp->bg_rect, 0, 0, 0, dim);
      }
 
    e_client_util_move_without_frame(ec, new_x, new_y);
@@ -1112,7 +1060,8 @@ _e_qp_srv_effect_stop(E_Policy_Quickpanel *qp)
      {
         e_zone_orientation_block_set(qp->zone, "quickpanel-mover", EINA_FALSE);
         QP_VISIBLE_SET(qp, EINA_FALSE);
-        E_FREE_FUNC(qp->mover, evas_object_del);
+        _e_qp_mover_destroy(qp->mover);
+        qp->mover = NULL;
      }
 }
 
@@ -1353,9 +1302,10 @@ _quickpanel_free(E_Policy_Quickpanel *qp)
      }
 
    if (qp->bg_rect)
-     evas_object_del(qp->bg_rect);
+     e_view_destroy(e_view_rect_view_get(qp->bg_rect));
 
-   E_FREE_FUNC(qp->mover, evas_object_del);
+   _e_qp_mover_destroy(qp->mover);
+   qp->mover = NULL;
    E_FREE_FUNC(qp->indi_obj, evas_object_del);
    E_FREE_FUNC(qp->handler_obj, evas_object_del);
    E_FREE_FUNC(qp->effect.animator, ecore_animator_del);
@@ -1751,7 +1701,8 @@ _quickpanel_cb_rotation_begin(void *data, int type, void *event)
    if (qp->ec != ec)
      goto end;
 
-   E_FREE_FUNC(qp->mover, evas_object_del);
+   _e_qp_mover_destroy(qp->mover);
+   qp->mover = NULL;
 
    _e_qp_srv_effect_disable_ref(qp);
 
@@ -2320,16 +2271,14 @@ e_service_quickpanel_client_add(E_Client *ec, E_Service_Quickpanel_Type type)
    // bg rect
    if (e_config->qp_use_bg_rect)
      {
-        Evas_Object *o;
-        o = evas_object_rectangle_add(e_comp_evas_get());
+        E_View_Tree *tree;
+        int color[4] = { 0, 0, 0, 0 };
+        tree = e_canvas_layer_view_tree_get(e_comp_canvas_get(), e_canvas_util_e_layer_map(E_LAYER_CLIENT_ALERT_LOW));
 
-        qp->bg_rect = o;
-        evas_object_layer_set(o, E_POLICY_QUICKPANEL_LAYER);
-        evas_object_name_set(o, "qp::bg_rect");
-        evas_object_move(o, 0, 0);
-        evas_object_resize(o, qp->zone->w, qp->zone->h);
-        evas_object_color_set(o, 0, 0, 0, 0);
-        evas_object_lower(o);
+        qp->bg_rect = e_view_rect_create(tree, qp->zone->w, qp->zone->h, color);
+        e_view_name_set(e_view_rect_view_get(qp->bg_rect), "qp::bg_rect");
+        e_view_position_set(e_view_rect_view_get(qp->bg_rect), 0, 0);
+        e_view_lower_to_bottom(e_view_rect_view_get(qp->bg_rect));
      }
    else
      qp->bg_rect = NULL;