add comp functions for injecting objects into the comp layout

SVN revision: 84054
This commit is contained in:
Mike Blumenkrantz 2013-02-18 13:43:22 +00:00
parent 89d422a4de
commit 04330ef7d9
2 changed files with 39 additions and 0 deletions

View File

@ -3256,6 +3256,17 @@ _e_comp_bd_unfullscreen(void *data EINA_UNUSED, int type EINA_UNUSED, void *even
return ECORE_CALLBACK_PASS_ON;
}
static void
_e_comp_injected_win_moveresize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
{
E_Comp *c = data;
int x, y, w, h;
evas_object_geometry_get(obj, &x, &y, &w, &h);
e_layout_child_move(obj, x, y);
e_layout_child_resize(obj, w, h);
}
#ifdef SHAPE_DEBUG
static void
_e_comp_shape_debug_rect(E_Comp *c, Ecore_X_Rectangle *rect, E_Color *color)
@ -4607,3 +4618,29 @@ e_comp_top_window_at_xy_get(E_Comp *c, Evas_Coord x, Evas_Coord y, Ecore_X_Windo
if (!cw) return c->ee_win;
return cw->win;
}
EAPI void
e_comp_object_inject(E_Comp *c, Evas_Object *obj, E_Layer layer)
{
E_Comp_Win *cw;
E_Container *con;
int pos, x, y, w, h;
EINA_SAFETY_ON_NULL_RETURN(c);
EINA_SAFETY_ON_NULL_RETURN(obj);
con = e_container_current_get(c->man);
EINA_SAFETY_ON_NULL_RETURN(con);
pos = 1 + (layer / 50);
if (pos > 10) pos = 10;
cw = _e_comp_win_find(con->layers[pos].win);
EINA_SAFETY_ON_NULL_RETURN(cw);
e_layout_pack(c->layout, obj);
e_layout_child_lower_below(obj, cw->shobj);
evas_object_geometry_get(obj, &x, &y, &w, &h);
e_layout_child_move(obj, x, y);
e_layout_child_resize(obj, w, h);
evas_object_smart_callback_add(obj, EVAS_CALLBACK_MOVE, _e_comp_injected_win_moveresize_cb, c);
evas_object_smart_callback_add(obj, EVAS_CALLBACK_RESIZE, _e_comp_injected_win_moveresize_cb, c);
}

View File

@ -218,6 +218,8 @@ EAPI E_Comp *e_comp_get(void *o);
EAPI Ecore_X_Window e_comp_top_window_at_xy_get(E_Comp *c, Evas_Coord x, Evas_Coord y, Ecore_X_Window *ignore, unsigned int ignore_num);
EAPI void e_comp_object_inject(E_Comp *c, Evas_Object *obj, E_Layer layer);
#define E_LAYER_SET(obj, layer) e_comp_canvas_layer_set(obj, layer, E_COMP_CANVAS_STACK_NONE)
#define E_LAYER_SET_UNDER(obj, layer) e_comp_canvas_layer_set(obj, layer, E_COMP_CANVAS_STACK_UNDER)
#define E_LAYER_SET_ABOVE(obj, layer) e_comp_canvas_layer_set(obj, layer, E_COMP_CANVAS_STACK_ABOVE)