- add ability to freeze / thaw clip so we can scroll without moving it with us

SVN revision: 17537
This commit is contained in:
codewarrior 2005-10-14 11:51:30 +00:00 committed by codewarrior
parent 9ccbda0948
commit 246b921514
2 changed files with 31 additions and 2 deletions

View File

@ -16,6 +16,7 @@ struct _E_Smart_Data
Evas_Object *clip;
Evas_Object *obj;
int frozen;
int clip_frozen;
unsigned char changed : 1;
Evas_List *items;
};
@ -252,6 +253,28 @@ e_icon_layout_reset(Evas_Object *obj)
}
}
void
e_icon_layout_clip_freeze(Evas_Object *obj)
{
E_Smart_Data *sd;
if ((!obj) || !(sd = evas_object_smart_data_get(obj)))
return;
sd->clip_frozen = 1;
}
void
e_icon_layout_clip_thaw(Evas_Object *obj)
{
E_Smart_Data *sd;
if ((!obj) || !(sd = evas_object_smart_data_get(obj)))
return;
sd->clip_frozen = 0;
}
/* local subsystem functions */
static E_Icon_Layout_Item *
_e_icon_layout_smart_adopt(E_Smart_Data *sd, Evas_Object *obj)
@ -398,8 +421,8 @@ _e_icon_layout_smart_add(Evas_Object *obj)
sd->yc = 0;
sd->clip = evas_object_rectangle_add(evas_object_evas_get(obj));
evas_object_smart_member_add(sd->clip, obj);
evas_object_move(sd->clip, -100000, -100000);
evas_object_resize(sd->clip, 200000, 200000);
evas_object_move(sd->clip, 0, 0);
evas_object_resize(sd->clip, 0, 0);
evas_object_color_set(sd->clip, 255, 255, 255, 255);
evas_object_smart_data_set(obj, sd);
}
@ -516,6 +539,9 @@ _e_icon_layout_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
Evas_List *l;
Evas_Coord dx, dy;
if(!sd->clip_frozen)
evas_object_move(sd->clip, x, y);
dx = x - sd->x;
dy = y - sd->y;
for (l = sd->items; l; l = l->next)
@ -538,6 +564,7 @@ _e_icon_layout_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
sd = evas_object_smart_data_get(obj);
if (!sd) return;
if ((w == sd->w) && (h == sd->h)) return;
evas_object_resize(sd->clip, w, h);
sd->w = w;
sd->h = h;
sd->changed = 1;

View File

@ -18,6 +18,8 @@ EAPI void e_icon_layout_child_stack_below (Evas_Object *obj, Evas_Object
EAPI void e_icon_layout_unpack (Evas_Object *obj);
EAPI void e_icon_layout_spacing_set(Evas_Object *obj, Evas_Coord xs, Evas_Coord ys);
EAPI void e_icon_layout_redraw_force (Evas_Object *obj);
EAPI void e_icon_layout_clip_freeze (Evas_Object *obj);
EAPI void e_icon_layout_clip_thaw (Evas_Object *obj);
#endif
#endif