Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/pager Modified Files: e_mod_main.c Log Message: fix sick/unstick =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v retrieving revision 1.61 retrieving revision 1.62 diff -u -3 -r1.61 -r1.62 --- e_mod_main.c 18 Mar 2005 16:50:03 -0000 1.61 +++ e_mod_main.c 18 Mar 2005 17:13:10 -0000 1.62 @@ -469,11 +469,10 @@ _pager_face_zone_unset(Pager_Face *face) { Evas_List *list; + e_object_unref(E_OBJECT(face->zone)); - for (list = face->desks; list; list = list->next) _pager_desk_free(list->data); - evas_list_free(face->desks); } @@ -544,15 +543,15 @@ static void _pager_desk_free(Pager_Desk *pd) { - Evas_List *list; + Evas_List *l; if (pd->desk_object) evas_object_del(pd->desk_object); if (pd->layout_object) evas_object_del(pd->layout_object); if (pd->event_object) evas_object_del(pd->event_object); e_object_unref(E_OBJECT(pd->desk)); - for (list = pd->wins; list; list = list->next) - _pager_window_free(list->data); + for (l = pd->wins; l; l = l->next) + _pager_window_free(l->data); evas_list_free(pd->wins); free(pd); } @@ -565,6 +564,7 @@ E_App *app; int visible; + if (!border) return NULL; pw = E_NEW(Pager_Win, 1); if (!pw) return NULL; @@ -601,7 +601,6 @@ { if (pw->window_object) evas_object_del(pw->window_object); if (pw->icon_object) evas_object_del(pw->icon_object); - e_object_unref(E_OBJECT(pw->border)); free(pw); } @@ -806,9 +805,8 @@ pw = _pager_desk_border_find(pd, ev->border); if (pw) { - pd->wins = evas_list_remove(pd->wins, pd); - if (ev->border->desk == pd->desk) - _pager_window_free(pw); + pd->wins = evas_list_remove(pd->wins, pw); + _pager_window_free(pw); } } return 1; @@ -869,13 +867,16 @@ static int _pager_face_cb_event_border_stick(void *data, int type, void *event) { - E_Event_Border_Stick *ev; + E_Event_Border_Stick *ev; Pager_Face *face; Evas_List *l; + Pager_Win *pw; face = data; ev = event; if (face->zone != ev->border->zone) return 1; + pw = _pager_face_border_find(face, ev->border); + if (!pw) return 1; for (l = face->desks; l; l = l->next) { Pager_Desk *pd; @@ -883,10 +884,9 @@ pd = l->data; if (ev->border->desk != pd->desk) { - Pager_Win *pw; - pw = _pager_window_new(pd, ev->border); - pd->wins = evas_list_append(pd->wins, pw); + if (pw) + pd->wins = evas_list_append(pd->wins, pw); } } return 1; @@ -897,7 +897,7 @@ { E_Event_Border_Unstick *ev; Pager_Face *face; - Evas_List *l, *ll; + Evas_List *l; face = data; ev = event; @@ -913,7 +913,10 @@ pw = _pager_desk_border_find(pd, ev->border); if (pw) - pd->wins = evas_list_remove(pd->wins, pw); + { + pd->wins = evas_list_remove(pd->wins, pw); + _pager_window_free(pw); + } } } return 1; ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs