add method for setting the efm widget overlay clip to an external clipper

SVN revision: 74164
This commit is contained in:
Mike Blumenkrantz 2012-07-19 08:16:42 +00:00
parent d4a047f967
commit 7f6de8b710
2 changed files with 54 additions and 2 deletions

View File

@ -48,6 +48,7 @@ struct _E_Fm2_Smart_Data
Evas_Object *clip;
Evas_Object *underlay;
Evas_Object *overlay;
Evas_Object *overlay_clip;
Evas_Object *drop;
Evas_Object *drop_in;
Evas_Object *sel_rect;
@ -7767,7 +7768,8 @@ _e_fm2_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
sd->x = x;
sd->y = y;
evas_object_move(sd->underlay, sd->x, sd->y);
evas_object_move(sd->overlay, sd->x, sd->y);
if (!sd->overlay_clip)
evas_object_move(sd->overlay, sd->x, sd->y);
_e_fm2_dnd_drop_configure(sd->obj);
evas_object_move(sd->clip, sd->x - OVERCLIP, sd->y - OVERCLIP);
_e_fm2_obj_icons_place(sd);
@ -7788,7 +7790,8 @@ _e_fm2_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
sd->w = w;
sd->h = h;
evas_object_resize(sd->underlay, sd->w, sd->h);
evas_object_resize(sd->overlay, sd->w, sd->h);
if (!sd->overlay_clip)
evas_object_resize(sd->overlay, sd->w, sd->h);
_e_fm2_dnd_drop_configure(sd->obj);
evas_object_resize(sd->clip, sd->w + (OVERCLIP * 2), sd->h + (OVERCLIP * 2));
@ -7874,6 +7877,26 @@ _e_fm2_smart_clip_unset(Evas_Object *obj)
evas_object_clip_unset(sd->clip);
}
static void
_e_fm2_overlay_clip_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
E_Fm2_Smart_Data *sd = data;
int w, h;
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
evas_object_resize(sd->overlay, w, h);
}
static void
_e_fm2_overlay_clip_move(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
E_Fm2_Smart_Data *sd = data;
int x, y;
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
evas_object_move(sd->overlay, x, y);
}
static void
_e_fm2_menu(Evas_Object *obj, unsigned int timestamp)
{
@ -10118,3 +10141,31 @@ e_fm2_typebuf_visible_get(Evas_Object *obj)
EFM_SMART_CHECK(EINA_FALSE);
return sd->typebuf_visible;
}
EAPI void
e_fm2_overlay_clip_to(Evas_Object *obj, Evas_Object *clip)
{
int x, y, w, h;
EFM_SMART_CHECK();
if (sd->overlay_clip)
{
evas_object_event_callback_del_full(sd->overlay_clip, EVAS_CALLBACK_MOVE, _e_fm2_overlay_clip_move, sd);
evas_object_event_callback_del_full(sd->overlay_clip, EVAS_CALLBACK_RESIZE, _e_fm2_overlay_clip_resize, sd);
}
sd->overlay_clip = clip;
if (clip)
{
evas_object_clip_set(sd->overlay, clip);
evas_object_geometry_get(clip, &x, &y, &w, &h);
evas_object_move(sd->overlay, x, y);
evas_object_resize(sd->overlay, w, h);
evas_object_event_callback_add(clip, EVAS_CALLBACK_MOVE, _e_fm2_overlay_clip_move, sd);
evas_object_event_callback_add(clip, EVAS_CALLBACK_RESIZE, _e_fm2_overlay_clip_resize, sd);
}
else
{
evas_object_clip_set(sd->overlay, sd->clip);
evas_object_move(sd->overlay, sd->x, sd->y);
evas_object_resize(sd->overlay, sd->w, sd->h);
}
}

View File

@ -186,6 +186,7 @@ EAPI Evas_Object *e_fm2_icon_get(Evas *evas, E_Fm2_Icon *ic, Evas_Smart_Cb g
EAPI E_Fm2_Icon_Info *e_fm2_icon_file_info_get(E_Fm2_Icon *ic);
EAPI void e_fm2_icon_geometry_get(E_Fm2_Icon *ic, int *x, int *y, int *w, int *h);
EAPI Eina_Bool e_fm2_typebuf_visible_get(Evas_Object *obj);
EAPI void e_fm2_overlay_clip_to(Evas_Object *fm, Evas_Object *clip);
EAPI void e_fm2_client_data(Ecore_Ipc_Event_Client_Data *e);
EAPI void e_fm2_client_del(Ecore_Ipc_Event_Client_Del *e);