The attached patch provides some sort of solution for the problem where
you delete the currently active theme in the theme config dialog box.
This is obviously a dumb thing to do, but can result in lots of screen
corruption where you can't actually pick a new theme. The patch simply
activates the next theme possible in the list.

Its not pretty because to activate another theme a restart is required,
but its neater than display corruption.

Another option would be to put in some form of pre-delete callback to
stop the deletion happening in the first place.

metrics
Index: src/bin/e_int_config_theme.c
===================================================================
RCS file: /var/cvs/e/e17/apps/e/src/bin/e_int_config_theme.c,v
retrieving revision 1.39
diff -u -r1.39 e_int_config_theme.c
--- src/bin/e_int_config_theme.c        24 Sep 2006 00:48:14 -0000      1.39
+++ src/bin/e_int_config_theme.c        1 Oct 2006 13:43:47 -0000
@@ -229,10 +229,18 @@
    E_Config_Dialog_Data *cfdata;
    Evas_List *sel, *all, *n;
    E_Fm2_Icon_Info *ici, *ic;
+   E_Config_Theme *ctheme;
+   E_Action *a;
+   int active_theme_deleted = 0;
    
    cfdata = data;
    if (!cfdata->theme) return;
    if (!cfdata->o_fm) return;
+   ctheme = e_theme_config_get("theme");
+   if (ctheme && ctheme->file && cfdata->theme &&
+        !strcmp(ctheme->file, cfdata->theme))
+     active_theme_deleted = 1;
+     
 
    all = e_fm2_all_list_get(cfdata->o_fm);
    if (!all) return;
@@ -258,6 +266,17 @@
    evas_list_free(n);
    
    evas_object_smart_callback_call(cfdata->o_fm, "selection_change", cfdata);
+
+   /* Check if the theme we just deleted is the current theme. */
+   if (active_theme_deleted && cfdata->theme)
+     {
+       /* Actually take our cfdata settings and apply them in real life */
+       e_theme_config_set("theme", cfdata->theme);
+       e_config_save_queue();
+
+       a = e_action_find("restart");
+       if ((a) && (a->func.go)) a->func.go(NULL, NULL);
+     }
 }
 
 static void
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to