#include "e_client_intern.h"
#include "e_desk_intern.h"
#include "e_comp_intern.h"
+#include "e_comp_canvas_intern.h"
#include "e_focus_intern.h"
#include "e_view_intern.h"
#include "e_view_client_intern.h"
+#include "e_view_rect.h"
#define ZONE_EC_DATA_KEY "E_Zone_Client"
struct _E_Zone_Private
{
E_Zone *zone;
+ E_View_Rect *bg_event_view_rect;
+ E_View_Rect *bg_clip_view_rect;
struct
{
{
E_Comp *comp;
E_Zone *zone;
- Evas_Object *o;
E_Event_Zone_Add *ev;
+ E_Zone_Private *zone_priv;
+ E_View_Tree *layer_tree;
+ E_View_Rect *rect;
+ E_View *view;
+ int bg_clip_color[4] = {255, 255, 255, 255};
+ int bg_event_color[4] = {0, 0, 0, 0};
+
char name[40];
zone = E_OBJECT_ALLOC(E_Zone, E_ZONE_TYPE, _e_zone_free);
return NULL;
}
+ zone_priv = PRI(zone);
+
zone->x = x;
zone->y = y;
zone->w = w;
comp = e_comp_get();
comp->zones = eina_list_append(comp->zones, zone);
- o = evas_object_rectangle_add(comp->evas);
- zone->bg_clip_object = o;
- evas_object_repeat_events_set(o, 1);
- evas_object_layer_set(o, E_LAYER_BG);
- evas_object_name_set(o, "zone->bg_clip_object");
- evas_object_move(o, x, y);
- evas_object_resize(o, w, h);
- evas_object_color_set(o, 255, 255, 255, 255);
- evas_object_show(o);
-
- o = evas_object_rectangle_add(comp->evas);
- zone->bg_event_object = o;
- evas_object_name_set(o, "zone->bg_event_object");
- evas_object_clip_set(o, zone->bg_clip_object);
- evas_object_layer_set(o, E_LAYER_BG);
- evas_object_repeat_events_set(o, 1);
- evas_object_move(o, x, y);
- evas_object_resize(o, w, h);
- evas_object_color_set(o, 0, 0, 0, 0);
- evas_object_repeat_events_set(o, 1);
- evas_object_show(o);
+ layer_tree = e_canvas_layer_view_tree_get(e_comp_canvas_get(), E_CANVAS_LAYER_BG);
+ rect = e_view_rect_create(layer_tree, w, h, bg_clip_color);
+ zone_priv->bg_clip_view_rect = rect;
+ view = e_view_rect_view_get(rect);
+ e_view_name_set(view, "zone->bg_clip_view");
+ e_view_pass_events_set(view, true);
+ e_view_position_set(view, x, y);
+ e_view_show(view);
+
+ rect = e_view_rect_create(layer_tree, w, h, bg_event_color);
+ zone_priv->bg_event_view_rect = rect;
+ view = e_view_rect_view_get(rect);
+ e_view_name_set(view, "zone->bg_event_view");
+ e_view_clip_set(view, e_view_rect_view_get(zone_priv->bg_clip_view_rect));
+ e_view_pass_events_set(view, true);
+ e_view_position_set(view, x, y);
+ e_view_show(view);
zone->desk_x_count = 0;
zone->desk_y_count = 0;
{
E_Event_Zone_Move_Resize *ev;
int dx, dy;
+ E_View_Rect *bg_event_view_rect, *bg_clip_view_rect;
E_OBJECT_CHECK(zone);
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
dy = y - zone->y;
zone->x = x;
zone->y = y;
- evas_object_move(zone->bg_event_object, x, y);
- evas_object_move(zone->bg_clip_object, x, y);
+
+ bg_event_view_rect = PRI(zone)->bg_event_view_rect;
+ bg_clip_view_rect = PRI(zone)->bg_clip_view_rect;
+
+
+ e_view_position_set(e_view_rect_view_get(bg_event_view_rect), x, y);
+ e_view_position_set(e_view_rect_view_get(bg_clip_view_rect), x, y);
ev = E_NEW(E_Event_Zone_Move_Resize, 1);
if (ev)
dh = h - zone->h;
zone->w = w;
zone->h = h;
- evas_object_resize(zone->bg_event_object, w, h);
- evas_object_resize(zone->bg_clip_object, w, h);
+
+ e_view_rect_size_set(PRI(zone)->bg_event_view_rect, w, h);
+ e_view_rect_size_set(PRI(zone)->bg_clip_view_rect, w, h);
ev = E_NEW(E_Event_Zone_Move_Resize, 1);
if (ev)
{
E_Event_Zone_Move_Resize *ev;
int dx, dy, dw, dh;
+ E_View_Rect *bg_event_view_rect, *bg_clip_view_rect;
E_OBJECT_CHECK_RETURN(zone, EINA_FALSE);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, EINA_FALSE);
zone->w = w;
zone->h = h;
- evas_object_move(zone->bg_event_object, x, y);
- evas_object_move(zone->bg_clip_object, x, y);
- evas_object_resize(zone->bg_event_object, w, h);
- evas_object_resize(zone->bg_clip_object, w, h);
+ bg_event_view_rect = PRI(zone)->bg_event_view_rect;
+ bg_clip_view_rect = PRI(zone)->bg_clip_view_rect;
+
+ e_view_rect_size_set(bg_event_view_rect, w, h);
+ e_view_rect_size_set(bg_clip_view_rect, w, h);
+ e_view_position_set(e_view_rect_view_get(bg_event_view_rect), x, y);
+ e_view_position_set(e_view_rect_view_get(bg_clip_view_rect), x, y);
ev = E_NEW(E_Event_Zone_Move_Resize, 1);
if (ev)
static void
_e_zone_free(E_Zone *zone)
{
+ E_View_Rect *bg_event_view_rect, *bg_clip_view_rect;
+
wl_signal_emit(&PRI(zone)->events.destroy, NULL);
if(zone->focus) e_focus_del(zone->focus);
if (zone->name) eina_stringshare_del(zone->name);
- evas_object_del(zone->bg_event_object);
- evas_object_del(zone->bg_clip_object);
+ bg_event_view_rect = PRI(zone)->bg_event_view_rect;
+ bg_clip_view_rect = PRI(zone)->bg_clip_view_rect;
+
+ e_view_destroy(e_view_rect_view_get(bg_event_view_rect));
+ e_view_destroy(e_view_rect_view_get(bg_clip_view_rect));
e_view_destroy(zone->base);
e_view_destroy(zone->over);