|
From: Enlightenment S. <no-...@en...> - 2008-10-18 16:16:57
|
Log:
Fix group info sometimes not being saved.
Author: kwo
Date: 2008-10-18 09:16:47 -0700 (Sat, 18 Oct 2008)
New Revision: 36788
Modified:
trunk/E16/e/src/groups.c trunk/E16/e/src/groups.h trunk/E16/e/src/snaps.c
Modified: trunk/E16/e/src/groups.c
===================================================================
--- trunk/E16/e/src/groups.c 2008-10-18 16:13:54 UTC (rev 36787)
+++ trunk/E16/e/src/groups.c 2008-10-18 16:16:47 UTC (rev 36788)
@@ -65,7 +65,7 @@
Group *g;
double t;
- g = EMALLOC(Group, 1);
+ g = ECALLOC(Group, 1);
if (!g)
return NULL;
@@ -93,8 +93,6 @@
g->cfg.stick = Conf_groups.dflt.stick;
g->cfg.shade = Conf_groups.dflt.shade;
g->cfg.mirror = Conf_groups.dflt.mirror;
- g->num_members = 0;
- g->members = NULL;
return g;
}
@@ -127,6 +125,18 @@
(void *)(long)gid);
}
+void
+GroupRemember(int gid)
+{
+ Group *g;
+
+ g = GroupFind(gid);
+ if (!g)
+ return;
+
+ g->save = 1;
+}
+
static Group *
GroupFind2(const char *groupid)
{
@@ -349,6 +359,11 @@
g->num_members--;
if (g->num_members > 0)
g->members = EREALLOC(EWin *, g->members, g->num_members);
+ else if (g->save)
+ {
+ Efree(g->members);
+ g->members = NULL;
+ }
else
{
GroupDestroy(g);
@@ -519,18 +534,9 @@
ECORE_LIST_FOR_EACH(group_list, g)
{
- if (!g->members)
+ if (!g->save)
continue;
- /* Only if the group should be remembered, write info */
- if (!g->members[0]->snap)
- continue;
-
-#if 0
- if (!g->members[0]->snap->num)
- continue;
-#endif
-
fprintf(f, "NEW: %i\n", g->index);
fprintf(f, "ICONIFY: %i\n", g->cfg.iconify);
fprintf(f, "KILL: %i\n", g->cfg.kill);
Modified: trunk/E16/e/src/groups.h
===================================================================
--- trunk/E16/e/src/groups.h 2008-10-18 16:13:54 UTC (rev 36787)
+++ trunk/E16/e/src/groups.h 2008-10-18 16:16:47 UTC (rev 36788)
@@ -56,6 +56,7 @@
EWin **members;
int num_members;
GroupConfig cfg;
+ char save; /* Used in snapshot - must save */
};
/* finders.c */
@@ -71,5 +72,6 @@
void GroupsSave(void);
Group **GroupsGetList(int *pnum);
int GroupsGetSwapmove(void);
+void GroupRemember(int gid);
#endif /* _GROUPS_H_ */
Modified: trunk/E16/e/src/snaps.c
===================================================================
--- trunk/E16/e/src/snaps.c 2008-10-18 16:13:54 UTC (rev 36787)
+++ trunk/E16/e/src/snaps.c 2008-10-18 16:16:47 UTC (rev 36788)
@@ -410,20 +410,23 @@
if (onoff)
{
groups = EwinGetGroups(gwins[i], &num_groups);
- if (groups)
+ if (!groups)
+ continue;
+
+ sn = gwins[i]->snap;
+ if (!sn)
+ sn = _SnapEwinGet(gwins[i], SNAP_MATCH_DEFAULT);
+ if (!sn)
+ continue;
+
+ sn->num_groups = num_groups;
+ Efree(sn->groups);
+ sn->groups = EMALLOC(int, num_groups);
+
+ for (j = 0; j < num_groups; j++)
{
- sn = gwins[i]->snap;
- if (!sn)
- sn = _SnapEwinGet(gwins[i], SNAP_MATCH_DEFAULT);
- if (sn)
- {
- sn->num_groups = num_groups;
- Efree(sn->groups);
- sn->groups = EMALLOC(int, num_groups);
-
- for (j = 0; j < num_groups; j++)
- sn->groups[j] = groups[j]->index;
- }
+ sn->groups[j] = groups[j]->index;
+ groups[j]->save = 1;
}
}
else
@@ -1372,6 +1375,7 @@
sn->groups = EREALLOC(int, sn->groups, sn->num_groups);
sn->groups[sn->num_groups - 1] = atoi(s);
+ GroupRemember(sn->groups[sn->num_groups - 1]);
}
#if USE_COMPOSITE
else if (!strcmp(buf, "OPACITY"))
|