|
From: Enlightenment S. <no-...@en...> - 2008-10-10 20:55:37
|
Log:
Look for theme in <path>/<themename>/e16 too (suggested by Don Harrop).
Author: kwo
Date: 2008-10-10 13:55:26 -0700 (Fri, 10 Oct 2008)
New Revision: 36575
Modified:
trunk/E16/e/src/E.h trunk/E16/e/src/menus-misc.c trunk/E16/e/src/theme.c
Modified: trunk/E16/e/src/E.h
===================================================================
--- trunk/E16/e/src/E.h 2008-10-10 19:49:06 UTC (rev 36574)
+++ trunk/E16/e/src/E.h 2008-10-10 20:55:26 UTC (rev 36575)
@@ -517,6 +517,7 @@
void StartupWindowsOpen(void);
/* theme.c */
+char *ThemePathName(const char *path);
void ThemePathFind(void);
char **ThemesList(int *num);
Modified: trunk/E16/e/src/menus-misc.c
===================================================================
--- trunk/E16/e/src/menus-misc.c 2008-10-10 19:49:06 UTC (rev 36574)
+++ trunk/E16/e/src/menus-misc.c 2008-10-10 20:55:26 UTC (rev 36575)
@@ -538,8 +538,7 @@
{
char **lst;
int i, num;
- char ss[4096];
- const char *s;
+ char ss[4096], *s;
MenuItem *mi;
if (MenuGetTimestamp(m))
@@ -549,10 +548,11 @@
lst = ThemesList(&num);
for (i = 0; i < num; i++)
{
- s = fullfileof(lst[i]);
+ s = ThemePathName(lst[i]);
Esnprintf(ss, sizeof(ss), "theme use %s", s);
mi = MenuItemCreate(s, NULL, ss, NULL);
MenuAddItem(m, mi);
+ Efree(s);
}
if (lst)
StrlistFree(lst, i);
Modified: trunk/E16/e/src/theme.c
===================================================================
--- trunk/E16/e/src/theme.c 2008-10-10 19:49:06 UTC (rev 36574)
+++ trunk/E16/e/src/theme.c 2008-10-10 20:55:26 UTC (rev 36575)
@@ -85,6 +85,31 @@
return NULL; /* Not OK */
}
+char *
+ThemePathName(const char *path)
+{
+ const char *p;
+ char *s;
+
+ if (!path)
+ return NULL;
+ p = strrchr(path, '/');
+ if (!p)
+ return Estrdup(path); /* Name only */
+ if (strcmp(p + 1, "e16"))
+ return Estrdup(p + 1); /* Regular path */
+
+ /* <path>/<themename>/e16 */
+ s = strdup(path);
+ s[p - path] = '\0';
+ p = strrchr(s, '/');
+ if (!p)
+ return Estrdup(path); /* Should not happen */
+ p++;
+ memmove(s, p, strlen(p) + 1);
+ return s;
+}
+
static char *
append_merge_dir(char *dir, char ***list, int *count)
{
@@ -135,8 +160,12 @@
{
if (isdir(ss))
{
- if (SanitiseThemeDir(ss))
- continue;
+ if (!SanitiseThemeDir(ss))
+ goto got_one;
+ Esnprintf(ss, sizeof(ss), "%s/%s/e16", dir, str[i]);
+ if (!SanitiseThemeDir(ss))
+ goto got_one;
+ continue;
}
else if (isfile(ss))
{
@@ -148,6 +177,7 @@
continue;
}
+ got_one:
(*count)++;
*list = EREALLOC(char *, *list, *count);
@@ -371,6 +401,10 @@
ret = ThemeExtract(tdir);
if (ret)
return ret;
+ Esnprintf(tdir, sizeof(tdir), "%s/%s/e16", p, theme);
+ ret = ThemeExtract(tdir);
+ if (ret)
+ return ret;
}
if (strcmp(theme, "-"))
@@ -425,7 +459,7 @@
}
Efree(Conf.theme.name);
- Conf.theme.name = Estrdup(fullfileof(theme));
+ Conf.theme.name = ThemePathName(theme);
Efree(Mode.theme.path);
Mode.theme.path = (theme) ? theme : Estrdup("-");
|