- e_icon_canvas cleanup and more work on white bug problem


SVN revision: 19145
This commit is contained in:
codewarrior 2005-12-19 14:11:28 +00:00 committed by codewarrior
parent bceb9c3ec3
commit b6bc092d13
2 changed files with 51 additions and 122 deletions

View File

@ -1529,7 +1529,7 @@ _e_fm_dir_set(E_Fm_Smart_Data *sd, const char *dir)
_e_fm_file_free(sd->files->data); _e_fm_file_free(sd->files->data);
sd->files = evas_list_remove_list(sd->files, sd->files); sd->files = evas_list_remove_list(sd->files, sd->files);
} }
e_icon_canvas_reset(sd->layout); e_icon_canvas_reset(sd->layout);
/* Get new files */ /* Get new files */
if (sd->monitor) ecore_file_monitor_del(sd->monitor); if (sd->monitor) ecore_file_monitor_del(sd->monitor);

View File

@ -108,7 +108,7 @@ e_icon_canvas_thaw(Evas_Object *obj)
return -1; return -1;
sd->frozen--; sd->frozen--;
//if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd); if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd);
return sd->frozen; return sd->frozen;
} }
@ -138,7 +138,7 @@ e_icon_canvas_width_fix(Evas_Object *obj, Evas_Coord w)
sd->vw = w; sd->vw = w;
sd->vh = 0; sd->vh = 0;
sd->changed = 1; sd->changed = 1;
//if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd); if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd);
} }
void void
@ -155,7 +155,7 @@ e_icon_canvas_height_fix(Evas_Object *obj, Evas_Coord h)
sd->vw = 0; sd->vw = 0;
sd->vh = h; sd->vh = h;
sd->changed = 1; sd->changed = 1;
//if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd); if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd);
} }
void void
@ -318,7 +318,7 @@ e_icon_canvas_spacing_set(Evas_Object *obj, Evas_Coord xs, Evas_Coord ys)
sd->changed = 1; sd->changed = 1;
//if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd); if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd);
} }
void void
@ -342,9 +342,9 @@ e_icon_canvas_reset(Evas_Object *obj)
if ((!obj) || !(sd = evas_object_smart_data_get(obj))) if ((!obj) || !(sd = evas_object_smart_data_get(obj)))
return; return;
sd->xc = sd->x + sd->xs; sd->xc = sd->viewport.x + sd->xs;
sd->yc = sd->y + sd->ys; sd->yc = sd->viewport.y + sd->ys;
sd->mw = 0; sd->mw = 0;
sd->mh = 0; sd->mh = 0;
@ -376,6 +376,9 @@ e_icon_canvas_reset(Evas_Object *obj)
} }
} }
} }
sd->x = sd->viewport.x;
sd->y = sd->viewport.y;
} }
void void
@ -412,7 +415,7 @@ e_icon_canvas_viewport_set(Evas_Object *obj, Evas_Object *viewport)
sd->viewport.obj = viewport; sd->viewport.obj = viewport;
evas_object_geometry_get(sd->viewport.obj, &(sd->viewport.x), &(sd->viewport.y), evas_object_geometry_get(sd->viewport.obj, &(sd->viewport.x), &(sd->viewport.y),
&(sd->viewport.w), &(sd->viewport.h)); &(sd->viewport.w), &(sd->viewport.h));
//if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd); if (sd->frozen <= 0) _e_icon_canvas_reconfigure(sd);
} }
Evas_Object * Evas_Object *
@ -481,87 +484,37 @@ _e_icon_canvas_item_del_hook(void *data, Evas *e, Evas_Object *obj, void *event_
static void static void
_e_icon_canvas_reconfigure(E_Smart_Data *sd) _e_icon_canvas_reconfigure(E_Smart_Data *sd)
{ {
Evas_Coord x, y, w, h, maxw, maxh; int i, j;
Evas_List *l;
_e_icon_canvas_smart_resize(sd->obj, sd->w, sd->h); if(!sd->changed) return;
return; for(i = 0; i < TILE_NUM; i++)
{
if (!sd->changed) return; for(j = 0; j < TILE_NUM; j++)
{
x = sd->x + sd->xs; if(sd->tiles[i][j])
y = sd->y + sd->ys; {
w = sd->vw; E_Icon_Canvas_Tile *t;
h = sd->vh;
maxw = 0; t = sd->tiles[i][j];
maxh = 0;
if(E_INTERSECTS(sd->viewport.x, sd->viewport.y,
#if 0 sd->viewport.w, sd->viewport.h,
while(sd->xlist.list) t->x, t->y, t->w, t->h))
sd->xlist.list = evas_list_remove_list(sd->xlist.list, sd->xlist.list); {
while(sd->xlist.list) if(t->visible == 1)
sd->ylist.list = evas_list_remove_list(sd->ylist.list, sd->ylist.list); continue;
_e_icon_canvas_tile_show(t);
if (sd->fixed == 0) }
{ else
for (l = sd->items; l; l = l->next) {
{ if(!t->visible)
E_Icon_Canvas_Item *li; continue;
Evas_Object *obj; _e_icon_canvas_tile_hide(t);
}
obj = l->data; }
li = evas_object_data_get(obj, "e_icon_canvas_data"); }
}
if(li->h > maxh) maxh = li->h;
if(x > sd->x + w || x + li->w > sd->x + w)
{
x = sd->x + sd->xs;
y += maxh + sd->ys;
maxh = 0;
}
li->x = x;
li->y = y;
_e_icon_canvas_pack(sd, obj);
x += li->w + sd->xs;
}
sd->vh = y - sd->y;
}
else
{
for (l = sd->items; l; l = l->next)
{
E_Icon_Canvas_Item *li;
Evas_Object *obj;
obj = l->data;
li = evas_object_data_get(obj, "e_icon_canvas_data");
if(li->w > maxw) maxw = li->w;
if(y > sd->y + h || y + li->h > sd->y + h)
{
y = sd->y + sd->ys;
x += maxw + sd->xs;
maxw = 0;
}
li->x = x;
li->y = y;
_e_icon_canvas_pack(sd, obj);
y += li->h + sd->ys;
}
sd->vw = x - sd->x;
}
#endif
sd->xc = x;
sd->yc = y;
sd->changed = 0; sd->changed = 0;
} }
@ -594,6 +547,9 @@ _e_icon_canvas_tile_add(E_Smart_Data *sd, Evas_Coord x, Evas_Coord y)
{ {
int tx, ty; int tx, ty;
E_Icon_Canvas_Tile *tile; E_Icon_Canvas_Tile *tile;
if(x < 0 || y < 0)
return NULL;
if(x == 0) if(x == 0)
tx = 0; tx = 0;
@ -623,7 +579,7 @@ _e_icon_canvas_tile_add(E_Smart_Data *sd, Evas_Coord x, Evas_Coord y)
{ {
_e_icon_canvas_tile_show(tile); _e_icon_canvas_tile_show(tile);
} }
return tile; return tile;
} }
@ -658,8 +614,8 @@ _e_icon_canvas_tile_show(E_Icon_Canvas_Tile *t)
if(t->visible == 1) return; if(t->visible == 1) return;
t->visible = 1; t->visible = 1;
for(l = t->items; l; l = l->next) for(l = t->items; l; l = l->next)
_e_icon_canvas_icon_show(l->data); _e_icon_canvas_icon_show(l->data);
} }
static void static void
@ -757,8 +713,7 @@ _e_icon_canvas_smart_show(Evas_Object *obj)
{ {
E_Smart_Data *sd; E_Smart_Data *sd;
sd = evas_object_smart_data_get(obj); sd = evas_object_smart_data_get(obj);
evas_object_show(sd->clip); evas_object_show(sd->clip);
} }
@ -768,7 +723,6 @@ _e_icon_canvas_smart_hide(Evas_Object *obj)
E_Smart_Data *sd; E_Smart_Data *sd;
sd = evas_object_smart_data_get(obj); sd = evas_object_smart_data_get(obj);
evas_object_hide(sd->clip); evas_object_hide(sd->clip);
} }
@ -852,7 +806,7 @@ _e_icon_canvas_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
dx = x - sd->x; dx = x - sd->x;
dy = y - sd->y; dy = y - sd->y;
for(i = 0; i < TILE_NUM; i++) for(i = 0; i < TILE_NUM; i++)
{ {
for(j = 0; j < TILE_NUM; j++) for(j = 0; j < TILE_NUM; j++)
@ -906,33 +860,8 @@ _e_icon_canvas_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
&(sd->viewport.x), &(sd->viewport.y), &(sd->viewport.x), &(sd->viewport.y),
&(sd->viewport.w), &(sd->viewport.h)); &(sd->viewport.w), &(sd->viewport.h));
for(i = 0; i < TILE_NUM; i++) sd->changed = 1;
{ _e_icon_canvas_reconfigure(sd);
for(j = 0; j < TILE_NUM; j++)
{
if(sd->tiles[i][j])
{
E_Icon_Canvas_Tile *t;
t = sd->tiles[i][j];
if(E_INTERSECTS(sd->viewport.x, sd->viewport.y,
sd->viewport.w, sd->viewport.h,
t->x, t->y, t->w, t->h))
{
if(t->visible == 1)
continue;
_e_icon_canvas_tile_show(t);
}
else
{
if(!t->visible)
continue;
_e_icon_canvas_tile_hide(t);
}
}
}
}
} }
static void static void