#include "e_comp_wl_intern.h"
#include "e_view_intern.h"
#include "e_view_client_intern.h"
+#include "e_view_rect.h"
#include "e_comp_wl_intern.h"
+#include "e_comp_canvas.h"
#include "e_seat_intern.h"
#include <wayland-server.h>
#define REGION_OBJS_VISIBLE_CHANGE(V) \
do { \
Eina_List *l; \
- Evas_Object *o; \
+ E_View_Rect *o; \
EINA_LIST_FOREACH(_volume_region_objs[_volume_cur_angle_map], l, o) \
{ \
- if (V) evas_object_show(o); \
- else evas_object_hide(o); \
+ if (V) e_view_show(e_view_rect_view_get(o)); \
+ else e_view_hide(e_view_rect_view_get(o)); \
} \
} while(0)
#define REGION_OBJS_SHOW() REGION_OBJS_VISIBLE_CHANGE(EINA_TRUE)
{
Eina_List *l;
Eina_Rectangle *r;
- Evas_Object *region_obj;
+ E_View_Rect *region_obj;
int x, y;
REGION_OBJS_FOREACH(l, region_obj)
{
- r = evas_object_data_get(region_obj, "content_rect");
+ E_View *view = e_view_rect_view_get(region_obj);
+ r = e_view_data_get(view, "content_rect");
if (EINA_UNLIKELY(r == NULL))
continue;
e_view_client_geometry_get(e_client_view_get(_volume_ec), &x, &y, NULL, NULL);
- evas_object_move(region_obj, x + r->x, y + r->y);
+ e_view_position_set(view, x + r->x, y + r->y);
}
}
_volume_client_view_cb_restack(struct wl_listener *listener, void *data)
{
Eina_List *l;
- Evas_Object *region_obj;
+ E_View_Rect *region_obj;
REGION_OBJS_FOREACH(l, region_obj)
- evas_object_stack_above(region_obj, _volume_ec->frame);
+ e_view_place_above(e_view_rect_view_get(region_obj), e_view_client_view_get(e_client_view_get(_volume_ec)));
}
static Eina_Bool
}
static void
-_region_obj_del(Evas_Object *obj)
+_region_obj_del(E_View_Rect *obj)
{
Eina_Rectangle *r;
+ E_View *obj_view = e_view_rect_view_get(obj);
- r = evas_object_data_get(obj, "content_rect");
- E_FREE_FUNC(r, eina_rectangle_free);
- evas_object_del(obj);
+ r = e_view_data_get(obj_view, "content_rect");
+ if (r) E_FREE_FUNC(r, eina_rectangle_free);
+ e_view_destroy(obj_view);
}
static void
_region_objs_del(E_Policy_Angle_Map angle_map)
{
- Evas_Object *obj;
+ E_View_Rect *obj;
E_View *view;
E_View_Client *view_client;
return EINA_TRUE;
}
-static Evas_Object *
-_volume_content_region_obj_new(void)
+static E_View_Rect *
+_volume_content_region_obj_new(int width, int height)
{
- Evas_Object *obj;
+ /* make it transparent */
+ int color[4] = {0, 0, 0, 0};
+ E_View_Tree *layer_tree;
+ E_View_Client *view_client;
+ E_View_Rect *obj;
+ E_View* obj_view;
- obj = evas_object_rectangle_add(evas_object_evas_get(_volume_ec->frame));
+ view_client = e_client_view_get(_volume_ec);
+ if (!view_client)
+ {
+ ERR("There is no view_client for volume_ec(%p)", _volume_ec);
+ return NULL;
+ }
- /* make it transparent */
- evas_object_color_set(obj, 0, 0, 0, 0);
+ layer_tree = e_canvas_layer_view_tree_get(e_comp_canvas_get(), e_view_layer_index_get(e_view_client_view_get(view_client)));
+ obj = e_view_rect_create(layer_tree, width, height, color);
+ if (!obj)
+ {
+ ERR("E_View_Rect creation is failed (width=%d, height=%d)", width, height);
+ return NULL;
+ }
- /* set stack of obj object on the volume object. */
- evas_object_layer_set(obj, evas_object_layer_get(_volume_ec->frame));
- evas_object_stack_above(obj, _volume_ec->frame);
+ /* set stack of region view_rect on the volume object. */
+ obj_view = e_view_rect_view_get(obj);
+ e_view_place_above(obj_view, e_view_client_view_get(view_client));
- evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_MOVE,
+ evas_object_event_callback_add(obj_view->eo, EVAS_CALLBACK_MOUSE_MOVE,
_volume_region_obj_cb_mouse_move, NULL);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN,
+ evas_object_event_callback_add(obj_view->eo, EVAS_CALLBACK_MOUSE_DOWN,
_volume_region_obj_cb_mouse_down, NULL);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_UP,
+ evas_object_event_callback_add(obj_view->eo, EVAS_CALLBACK_MOUSE_UP,
_volume_region_obj_cb_mouse_up, NULL);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_MULTI_DOWN,
+ evas_object_event_callback_add(obj_view->eo, EVAS_CALLBACK_MULTI_DOWN,
_volume_region_obj_cb_multi_down, NULL);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_MULTI_UP,
+ evas_object_event_callback_add(obj_view->eo, EVAS_CALLBACK_MULTI_UP,
_volume_region_obj_cb_multi_up, NULL);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_MULTI_MOVE,
+ evas_object_event_callback_add(obj_view->eo, EVAS_CALLBACK_MULTI_MOVE,
_volume_region_obj_cb_multi_move, NULL);
return obj;
Eina_List *objs_list, *l, *ll;
Eina_Iterator *it;
Eina_Rectangle *r, *cr;
- Evas_Object *obj;
+ E_View_Rect *obj;
+ E_View *obj_view;
E_Zone *zone;
E_Desk *desk;
obj = eina_list_data_get(objs_list);
if (obj)
{
+ obj_view = e_view_rect_view_get(obj);
+ cr = e_view_data_get(obj_view, "content_rect");
+ if (cr) EINA_RECTANGLE_SET(cr, r->x, r->y, r->w, r->h);
+ e_view_rect_size_set(obj, r->w, r->h);
objs_list = eina_list_next(objs_list);
- cr = evas_object_data_get(obj, "content_rect");
- E_FREE_FUNC(cr, eina_rectangle_free);
}
else
{
- obj = _volume_content_region_obj_new();
+ obj = _volume_content_region_obj_new(r->w, r->h);
+ /* store the value of reigon as a region view_rect's data */
+ cr = eina_rectangle_new(r->x, r->y, r->w, r->h);
+ obj_view = e_view_rect_view_get(obj);
+ e_view_data_set(obj_view, "content_rect", cr);
_volume_region_objs[angle_map] = eina_list_append(_volume_region_objs[angle_map], obj);
- e_desk_smart_member_add(desk, obj);
+ e_desk_smart_member_add(desk, obj_view->eo);
}
INF("\t@@@@@ Region Set: %d %d %d %d", r->x, r->y, r->w, r->h);
- /* set geometry of region object */
- evas_object_move(obj, _volume_ec->client.x + r->x, _volume_ec->client.y + r->y);
- evas_object_resize(obj, r->w, r->h);
+ /* set geometry of region view_rect */
+ e_view_position_set(obj_view, _volume_ec->client.x + r->x, _volume_ec->client.y + r->y);
- /* store the value of reigon as a region object's data */
- cr = eina_rectangle_new(r->x, r->y, r->w, r->h);
- evas_object_data_set(obj, "content_rect", cr);
+ /* store the value of reigon as a region view_rect's data */
if (angle_map == _volume_cur_angle_map)
{
if (e_view_client_visible_get(e_client_view_get(_volume_ec)))
- evas_object_show(obj);
+ e_view_show(obj_view);
}
}
eina_iterator_free(it);
- /* delete rest of objects after reusing */
+ /* delete rest of region view_rects after reusing */
EINA_LIST_FOREACH_SAFE(objs_list, l, ll, obj)
{
- _region_obj_del(obj);
+ _region_obj_del(obj);
_volume_region_objs[angle_map] =
eina_list_remove_list(_volume_region_objs[angle_map], l);
}