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

Reply via email to