forked from enlightenment/enlightenment
add method for setting the efm widget overlay clip to an external clipper
SVN revision: 74164
This commit is contained in:
parent
d4a047f967
commit
7f6de8b710
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue