Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_config_background.c e_utils.c e_utils.h 


Log Message:


some minor fixes to bg cf dialog. a FIXMe there tho. i think we can avoid the
cb_data entirely actually... :) need to fix that.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_background.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- e_int_config_background.c   11 Jan 2006 01:50:47 -0000      1.14
+++ e_int_config_background.c   12 Jan 2006 23:35:31 -0000      1.15
@@ -60,14 +60,9 @@
 {
    cfdata->bg_method = BG_SET_DEFAULT_DESK;
    if (e_config->desktop_default_background) 
-     {
-       cfdata->current_file = strdup(e_config->desktop_default_background);
-     }
+     cfdata->current_file = strdup(e_config->desktop_default_background);
    else 
-     {
-       cfdata->current_file = NULL;
-     }
-   
+     cfdata->current_file = NULL;
    /* TODO: get default bg */
 }
 
@@ -89,7 +84,7 @@
 _free_data(E_Config_Dialog *cfd, CFData *cfdata)
 {
    /* Free the cfdata */
-   free(cfdata->current_file);
+   if (cfdata->current_file) free(cfdata->current_file);
    free(cfdata);
 }
 
@@ -97,10 +92,18 @@
 static int
 _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
 {
+   while (e_config->desktop_backgrounds)
+     {
+       E_Config_Desktop_Background *cfbg;
+       
+       cfbg = e_config->desktop_backgrounds->data;
+       e_bg_del(cfbg->container, cfbg->zone, cfbg->desk_x, cfbg->desk_y);
+     }
    if (e_config->desktop_default_background) 
evas_stringshare_del(e_config->desktop_default_background);
    e_config->desktop_default_background = evas_stringshare_add(cfdata->file);
    e_bg_update();
    e_config_save_queue();
+   if (cfdata->current_file) free(cfdata->current_file);
    cfdata->current_file = strdup(cfdata->file);
    return 1; /* Apply was OK */
 }
@@ -112,8 +115,10 @@
    CFData *cfdata;
    
    d = data;
-   e_widget_image_object_set(d->cfd->data, e_thumb_evas_object_get(d->file, 
d->cfd->dia->win->evas, 200, 160, 1));
    cfdata = d->cfd->cfdata;
+   e_widget_image_object_set
+     (d->cfd->data,
+      e_thumb_evas_object_get(d->file, d->cfd->dia->win->evas, 200, 160, 1));
    if (cfdata->current_file) 
      {
        if (!strcmp(d->file, cfdata->current_file)) 
@@ -162,23 +167,47 @@
    E_Desk *d;
    int x, y;
 
-   z = e_zone_current_get(cfd->con);   
+   if (!cfdata->file) return 0;
    switch (cfdata->bg_method) 
      {
       case BG_SET_DEFAULT_DESK:
+       while (e_config->desktop_backgrounds)
+         {
+            E_Config_Desktop_Background *cfbg;
+            
+            cfbg = e_config->desktop_backgrounds->data;
+            e_bg_del(cfbg->container, cfbg->zone, cfbg->desk_x, cfbg->desk_y);
+         }
        if (e_config->desktop_default_background) 
evas_stringshare_del(e_config->desktop_default_background);
        e_config->desktop_default_background = 
evas_stringshare_add(cfdata->file);
        e_bg_update();
        e_config_save_queue();
-       cfdata->current_file = strdup(cfdata->file);    
        break;
       case BG_SET_THIS_DESK:
+       z = e_zone_current_get(cfd->con);   
        d = e_desk_current_get(z);
        e_desk_xy_get(d, &x, &y);
+       e_bg_del(-1, -1, -1, -1);
+       e_bg_del(z->container->num, z->num, x, y);
+       e_bg_add(z->container->num, z->num, x, y, cfdata->file);
+       e_bg_update();
+        e_config_save_queue();
        break;
       case BG_SET_ALL_DESK:
+       while (e_config->desktop_backgrounds)
+         {
+            E_Config_Desktop_Background *cfbg;
+            
+            cfbg = e_config->desktop_backgrounds->data;
+            e_bg_del(cfbg->container, cfbg->zone, cfbg->desk_x, cfbg->desk_y);
+         }
+       e_bg_add(-1, -1, -1, -1, cfdata->file);
+       e_bg_update();
+        e_config_save_queue();
        break;
      }
+   if (cfdata->current_file) free(cfdata->current_file);
+   cfdata->current_file = strdup(cfdata->file);        
    return 1; /* Apply was OK */   
 }
 
@@ -219,10 +248,10 @@
    oc = e_widget_radio_add(evas, _("Default Desktop"), BG_SET_DEFAULT_DESK, 
rg);
    e_widget_framelist_object_append(fr, oc);   
    oc = e_widget_radio_add(evas, _("This Desktop"), BG_SET_THIS_DESK, rg);
-   e_widget_disabled_set(oc, 1);
+//   e_widget_disabled_set(oc, 1);
    e_widget_framelist_object_append(fr, oc);   
    oc = e_widget_radio_add(evas, _("All Desktops"), BG_SET_ALL_DESK, rg);
-   e_widget_disabled_set(oc, 1);
+//   e_widget_disabled_set(oc, 1);
    e_widget_framelist_object_append(fr, oc);   
 
    e_widget_table_object_append(o, fr, 1, 1, 1, 1, 1, 1, 1, 1);   
@@ -254,50 +283,43 @@
          {
             char *bgfile;
             char fullbg[PATH_MAX];
-            Evas_Object *o;
-            Ecore_Evas *eebuf;
-            Evas *evasbuf;
+            Evas_Object *o, *otmp;
             int i = 0;
             
-            eebuf = ecore_evas_buffer_new(1, 1);
-            evasbuf = ecore_evas_get(eebuf);
-            o = edje_object_add(evasbuf);
-                 
             while ((bgfile = ecore_list_next(bgs)))
               {
                  snprintf(fullbg, sizeof(fullbg), "%s/%s", buf, bgfile);
                  if (ecore_file_is_dir(fullbg)) continue;
                  
                  /* minimum theme requirements */
-                 if (edje_object_file_set(o, fullbg, "desktop/background"))
+                 if (e_util_edje_collection_exists(fullbg, 
"desktop/background"))
                    {
                       Evas_Object *o = NULL;
                       char *noext;
                       E_Cfg_Bg_Data *cb_data;
                       
                       o = e_thumb_generate_begin(fullbg, 48, 48, evas, &o, 
NULL, NULL);
-
                       noext = ecore_file_strip_ext(bgfile);
+                      /* FIXME: cb_data is leaked - not freed ever */
                       cb_data = E_NEW(E_Cfg_Bg_Data, 1);
                       cb_data->cfd = cfd;
                       cb_data->file = strdup(fullbg);
-                      e_widget_ilist_append(il, o, noext, 
_e_config_bg_cb_standard, cb_data, fullbg);
+                      e_widget_ilist_append(il, o, noext, 
_e_config_bg_cb_standard, cb_data, cb_data->file);
                       
-                      if ((e_config->desktop_default_background) && 
!(strcmp(e_config->desktop_default_background, fullbg)))
+                      if ((e_config->desktop_default_background) && 
+                          (!strcmp(e_config->desktop_default_background, 
fullbg)))
                         {                          
                            e_widget_ilist_selected_set(il, i);
                            bg = edje_object_add(evas);
                            edje_object_file_set(bg, 
e_config->desktop_default_background, "desktop/background");
                            im = e_widget_image_add_from_object(evas, bg, 200, 
160);
-                           e_widget_image_object_set(im, 
e_thumb_evas_object_get(fullbg, evas, 200, 160, 1));  
+                           e_widget_image_object_set(im, 
e_thumb_evas_object_get(fullbg, evas, 200, 160, 1));
                         }                     
                       free(noext);
                       i++;
                    }
               }
             free(bgfile);
-            evas_object_del(o);
-            ecore_evas_free(eebuf);
             ecore_list_destroy(bgs);
          }
      }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_utils.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- e_utils.c   10 Jan 2006 08:32:27 -0000      1.36
+++ e_utils.c   12 Jan 2006 23:35:32 -0000      1.37
@@ -486,6 +486,24 @@
    return below;
 }
 
+EAPI int
+e_util_edje_collection_exists(char *file, char *coll)
+{
+   Evas_List *clist, *l;
+   
+   clist = edje_file_collection_list(file);
+   for (l = clist; l; l = l->next)
+     {
+       if (!strcmp(coll, l->data))
+         {
+            edje_file_collection_list_free(clist);
+            return 1;
+         }
+     }
+   edje_file_collection_list_free(clist);
+   return 0;
+}
+
 /* local subsystem functions */
 static void
 _e_util_container_fake_mouse_up_cb(void *data)
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_utils.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- e_utils.h   14 Dec 2005 15:54:51 -0000      1.19
+++ e_utils.h   12 Jan 2006 23:35:32 -0000      1.20
@@ -28,6 +28,7 @@
 EAPI E_Container *e_util_container_window_find(Ecore_X_Window win);
 EAPI E_Border    *e_util_desk_border_above(E_Border *bd);
 EAPI E_Border    *e_util_desk_border_below(E_Border *bd);
+EAPI int          e_util_edje_collection_exists(char *file, char *coll);
     
 #endif
 #endif




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to