This should make it possible to change both rows and columns of desks at

the same time.


SVN revision: 15312
This commit is contained in:
sebastid 2005-06-13 19:49:11 +00:00 committed by sebastid
parent 8f4f470599
commit 47efbf19bd
1 changed files with 21 additions and 24 deletions

View File

@ -1162,7 +1162,6 @@ _pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event)
E_Desk *desk;
Evas_List *l;
int desks_x, desks_y;
int max_x, max_y;
int x, y;
Evas_Coord lw, lh, dw, dh;
@ -1180,12 +1179,28 @@ _pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event)
else dh = 0;
dh *= (desks_y - face->ynum);
max_x = MAX(face->xnum, desks_x);
max_y = MAX(face->ynum, desks_y);
for (x = 0; x < max_x; x++)
/* Loop to remove extra desks */
for (l = face->desks; l;)
{
for (y = 0; y < max_y; y++)
pd = l->data;
l = l->next;
if ((pd->xpos >= desks_x) || (pd->ypos >= desks_y))
{
/* remove desk */
if (pd->current)
{
desk = e_desk_current_get(ev->zone);
pd2 = _pager_face_desk_find(face, desk);
_pager_face_desk_select(pd2);
}
face->desks = evas_list_remove(face->desks, pd);
_pager_desk_free(pd);
}
}
/* Loop to add new desks */
for (x = 0; x < desks_x; x++)
{
for (y = 0; y < desks_y; y++)
{
if ((x >= face->xnum) || (y >= face->ynum))
{
@ -1195,24 +1210,6 @@ _pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event)
if (pd)
face->desks = evas_list_append(face->desks, pd);
}
else if ((x >= desks_x) || (y >= desks_y))
{
/* del desk */
for (l = face->desks; l; l = l->next)
{
pd = l->data;
if ((pd->xpos == x) && (pd->ypos == y))
break;
}
if (pd->current)
{
desk = e_desk_current_get(ev->zone);
pd2 = _pager_face_desk_find(face, desk);
_pager_face_desk_select(pd2);
}
face->desks = evas_list_remove(face->desks, pd);
_pager_desk_free(pd);
}
}
}