Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_apps.c e_apps.h e_border.c e_eap_editor.c 
        e_int_border_menu.c 


Log Message:


eap icons update realtime in borders based off on-disk changes etc. etc.
(editing icons seems to work like a charm for me so far).

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_apps.c,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -3 -r1.134 -r1.135
--- e_apps.c    13 May 2006 16:05:15 -0000      1.134
+++ e_apps.c    14 May 2006 01:13:42 -0000      1.135
@@ -444,6 +444,7 @@
 {
    Ecore_Exe *exe;
    E_App_Instance *inst;
+   Evas_List *l;
    
    E_OBJECT_CHECK_RETURN(a, 0);
    E_OBJECT_TYPE_CHECK_RETURN(a, E_APP_TYPE, 0);
@@ -476,6 +477,13 @@
 //   e_object_ref(E_OBJECT(a));
    _e_apps_start_pending = evas_list_append(_e_apps_start_pending, a);
    if (a->startup_notify) a->starting = 1;
+   for (l = a->references; l; l = l->next)
+     {
+       E_App *a2;
+       
+       a2 = l->data;
+       _e_app_change(a2, E_APP_EXEC);
+     }
    _e_app_change(a, E_APP_EXEC);
    return 1;
 }
@@ -759,13 +767,13 @@
 EAPI void
 e_app_remove(E_App *a)
 {
+   Evas_List *l;
    char buf[PATH_MAX];
 
    if (!a) return;
    if (!a->parent) return;
 
    a->parent->subapps = evas_list_remove(a->parent->subapps, a);
-
    /* Check if this app is in a repository or in the parents dir */
    snprintf(buf, sizeof(buf), "%s/%s", a->parent->path, 
ecore_file_get_file(a->path));
    if (ecore_file_exists(buf))
@@ -777,8 +785,16 @@
        a->path = evas_stringshare_add(buf);
      }
    _e_app_save_order(a->parent);
+   for (l = a->references; l; l = l->next)
+     {
+       E_App *a2;
+       
+       a2 = l->data;
+       e_app_remove(a2);
+     }
    _e_app_change(a, E_APP_DEL);
    a->parent = NULL;
+   e_object_unref(E_OBJECT(a));
 }
 
 EAPI void
@@ -1295,7 +1311,17 @@
    eet_close(ef);
    if (a->parent)
      {
+       Evas_List *l;
+       
        _e_app_change(a->parent, E_APP_CHANGE);
+       _e_app_change(a, E_APP_CHANGE);
+       for (l = a->references; l; l = l->next)
+         {
+            E_App *a2;
+            
+            a2 = l->data;
+            if (_e_app_copy(a2, a)) _e_app_change(a2, E_APP_CHANGE);
+         }
        _e_app_subdir_rescan(a->parent);
      }
 }
@@ -1565,8 +1591,13 @@
          }
        /* If this is an original, it wont be deleted until all references
         * are gone */
-       if (a->references)
+       while (a->references)
          {
+            E_App *a2;
+            
+            a2 = a->references->data;
+            a2->orig = NULL;
+            a->references = evas_list_remove_list(a->references, 
a->references);
             printf("BUG: An original eapp shouldn't have any references when 
freed! %d\n", evas_list_count(a->references));
          }
 
@@ -1603,16 +1634,19 @@
 {
    Evas_List *l;
 
+   if (ch == E_APP_DEL)
+     printf("APP_DEL %s\n", a->path);
+   if (ch == E_APP_CHANGE)
+     printf("APP_CHANGE %s\n", a->path);
+   if (ch == E_APP_ADD)
+     printf("APP_ADD %s\n", a->path);
    _e_apps_callbacks_walking = 1;
    for (l = _e_apps_change_callbacks; l; l = l->next)
      {
        E_App_Callback *cb;
        
        cb = l->data;
-       if (!cb->delete_me)
-         {
-            cb->func(cb->data, a, ch);
-         }
+       if (!cb->delete_me) cb->func(cb->data, a, ch);
      }
    _e_apps_callbacks_walking = 0;
    if (_e_apps_callbacks_delete_me)
@@ -1641,6 +1675,7 @@
 {
    E_App     *app;
    char      *file;
+   Evas_List *l;
    
    app = data;
    if ((!app) || (app->deleted))
@@ -1675,6 +1710,13 @@
             e_app_fields_empty(app);
             e_app_fields_fill(app, path);
             _e_app_change(app, E_APP_CHANGE);
+            for (l = app->references; l; l = l->next)
+              {
+                 E_App *a2;
+                 
+                 a2 = l->data;
+                 if (_e_app_copy(a2, app)) _e_app_change(a2, E_APP_CHANGE);
+              }
          }
        else if (event == ECORE_FILE_EVENT_DELETED_FILE)
          {
@@ -1720,7 +1762,6 @@
                  else
                    {
                       _e_app_change(a, E_APP_CHANGE);
-
                       for (l = a->references; l; l = l->next)
                         {
                            E_App *a2;
@@ -1996,6 +2037,7 @@
    Ecore_Exe_Event_Del *ev;
    E_App_Instance *ai;
    E_App *a;
+   Evas_List *l;
 
    ev = event;
    if (!ev->exe) return 1;
@@ -2049,6 +2091,13 @@
    free(ai);
    a->instances = evas_list_remove(a->instances, ai);
    _e_apps_start_pending = evas_list_remove(_e_apps_start_pending, a);
+   for (l = a->references; l; l = l->next)
+     {
+       E_App *a2;
+       
+       a2 = l->data;
+       _e_app_change(a2, E_APP_EXIT);
+     }
    _e_app_change(a, E_APP_EXIT);
    return 1;
 }
@@ -2085,6 +2134,13 @@
    while (removes)
      {
        a = removes->data;
+       for (l = a->references; l; l = l->next)
+         {
+            E_App *a2;
+            
+            a2 = l->data;
+            _e_app_change(a2, E_APP_READY);
+         }
         _e_app_change(a, E_APP_READY);
        _e_apps_start_pending = evas_list_remove(_e_apps_start_pending, a);
         e_object_unref(E_OBJECT(a));
@@ -2098,11 +2154,19 @@
 {
    E_App_Instance *inst;
    E_App *a;
+   Evas_List *l;
    
    inst = data;
    a = inst->app;
    _e_apps_start_pending = evas_list_remove(_e_apps_start_pending, a);
    inst->expire_timer = NULL;
+   for (l = a->references; l; l = l->next)
+     {
+       E_App *a2;
+       
+       a2 = l->data;
+       _e_app_change(a2, E_APP_READY_EXPIRE);
+     }
    _e_app_change(a, E_APP_READY_EXPIRE);
    return 0;
 }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_apps.h,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- e_apps.h    25 Mar 2006 05:28:57 -0000      1.31
+++ e_apps.h    14 May 2006 01:13:42 -0000      1.32
@@ -52,7 +52,6 @@
 
    Evas_List          *references; /* If this app is in a main repository, 
this would
                                      be a list to other eapp pointing to this 
*/
-
    Ecore_File_Monitor *monitor; /* Check for changes and files */
    
    unsigned char       startup_notify : 1; /* disable while starting etc. */
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.486
retrieving revision 1.487
diff -u -3 -r1.486 -r1.487
--- e_border.c  20 Apr 2006 11:30:23 -0000      1.486
+++ e_border.c  14 May 2006 01:13:42 -0000      1.487
@@ -6571,20 +6571,36 @@
 _e_border_app_change(void *data, E_App *app, E_App_Change change)
 {
    Evas_List *l;
-   
-   for (l = borders; l; l = l->next)
-     {
-       E_Border *bd;
 
-       bd = l->data;
-       if (e_app_equals(bd->app, app))
+   switch (change)
+     {
+      case E_APP_ADD:
+      case E_APP_DEL:
+      case E_APP_CHANGE:
+       for (l = borders; l; l = l->next)
          {
-            e_object_unref(E_OBJECT(bd->app));
-            bd->app = NULL;
-
-            bd->changes.icon = 1;
-            bd->changed = 1;
+            E_Border *bd;
+            
+            bd = l->data;
+//          if (e_app_equals(bd->app, app))
+              {
+                 if (bd->app)
+                   {
+                      e_object_unref(E_OBJECT(bd->app));
+                      bd->app = NULL;
+                   }
+                 
+                 bd->changes.icon = 1;
+                 bd->changed = 1;
+              }
          }
+       break;
+      case E_APP_EXEC:
+      case E_APP_READY:
+      case E_APP_READY_EXPIRE:
+      case E_APP_EXIT:
+      default:
+       break;
      }
 }
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_eap_editor.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- e_eap_editor.c      13 May 2006 14:57:20 -0000      1.24
+++ e_eap_editor.c      14 May 2006 01:13:42 -0000      1.25
@@ -170,8 +170,9 @@
    /* FIXME: hardcoded until the eap editor provides fields to change it */
    eap->width = 128;
    eap->height = 128;   
-   
-   e_app_fields_save(eap);
+
+   if ((eap->name) && (eap->exe))
+     e_app_fields_save(eap);
    
    return 1;
 }
@@ -224,7 +225,8 @@
    eap->width = 128;
    eap->height = 128;
    
-   e_app_fields_save(eap);
+   if ((eap->name) && (eap->exe))
+     e_app_fields_save(eap);
    return 1;
 }
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_border_menu.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- e_int_border_menu.c 12 Apr 2006 14:08:06 -0000      1.15
+++ e_int_border_menu.c 14 May 2006 01:13:42 -0000      1.16
@@ -566,10 +566,15 @@
             if (bd->client.icccm.name) a->exe = 
evas_stringshare_add(bd->client.icccm.name);
             if (bd->client.netwm.startup_id > 0)
               a->startup_notify = 1;
+            bd->app = a;
+            e_object_ref(E_OBJECT(bd->app));
          }
      }
    if (!a) return;
-   e_eap_edit_show(m->zone->container, a);
+   if (a->orig)
+     e_eap_edit_show(m->zone->container, a->orig);
+   else
+     e_eap_edit_show(m->zone->container, a);
 }
 
 static void




-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to