Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_main.c 


Log Message:
Remember desk on restart.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_main.c,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -3 -r1.99 -r1.100
--- e_main.c    16 Jun 2005 02:12:12 -0000      1.99
+++ e_main.c    16 Jun 2005 12:28:59 -0000      1.100
@@ -27,6 +27,9 @@
 static int  _e_main_cb_startup_fake_status(void *data);
 static int  _e_main_cb_startup_fake_end(void *data);
 
+static void _e_main_desk_save(void);
+static void _e_main_desk_restore(E_Manager *man, E_Container *con);
+
 E_Path *path_data    = NULL;
 E_Path *path_images  = NULL;
 E_Path *path_fonts   = NULL;
@@ -492,6 +495,9 @@
    /*     and all changed config was already saved before */
    e_config_save_flush();
 
+   /* Store current selected desktops */
+   _e_main_desk_save();
+
    /* unroll our stack of shutdown functions with exit code of 0 */
    _e_main_shutdown(0);
    
@@ -697,6 +703,7 @@
             e_manager_manage_windows(man);
             /* setup hints */
             e_hints_manager_init(man);
+            _e_main_desk_restore(man, con);
          }
        else
          {
@@ -976,3 +983,63 @@
    e_init_hide();
    return 0;
 }
+
+static void
+_e_main_desk_save(void)
+{
+   Evas_List *ml;
+   char env[1024];
+   char name[1024];
+
+   for (ml = e_manager_list(); ml; ml = ml->next)
+     {
+       E_Manager *man;
+       Evas_List *cl;
+
+       man = ml->data;
+
+       for (cl = man->containers; cl; cl = cl->next)
+         {
+            E_Container *con;
+            Evas_List *zl;
+
+            con = cl->data;
+            
+            for (zl = con->zones; zl; zl = zl->next)
+              {
+                 E_Zone *zone;
+
+                 zone = zl->data;
+
+                 snprintf(name, sizeof(name), "DESK_%d_%d_%d", man->num, 
con->num, zone->num);
+                 snprintf(env, sizeof(env), "%d,%d", zone->desk_x_current, 
zone->desk_y_current);
+                 e_util_env_set(name, env);
+              }
+         }
+     }
+}
+
+static void
+_e_main_desk_restore(E_Manager *man, E_Container *con)
+{
+   Evas_List *zl;
+   char *env;
+   char name[1024];
+
+   for (zl = con->zones; zl; zl = zl->next)
+     {
+       E_Zone *zone;
+       E_Desk *desk;
+       int desk_x, desk_y;
+
+       zone = zl->data;
+
+       snprintf(name, sizeof(name), "DESK_%d_%d_%d", man->num, con->num, 
zone->num);
+       env = getenv(name);
+       if (!env) continue;
+       if (!sscanf(env, "%d,%d", &desk_x, &desk_y)) continue;
+       desk = e_desk_at_xy_get(zone, desk_x, desk_y);
+       if (!desk) continue;
+       e_desk_show(desk);
+     }
+}




-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to