From 64d04cee950f1b501940af04e95bfeb13db963ef Mon Sep 17 00:00:00 2001 From: Olivier Fourdan <fourdan.olivier@wanadoo.fr> Date: Tue, 21 Sep 2004 19:27:01 +0000 Subject: [PATCH] Merge custom keytheme wit hsystem default to avoid missing shortcuts that prevent the WM to start. (Old svn revision: 11961) --- src/parserc.c | 12 +++++++++--- src/parserc.h | 1 + src/settings.c | 14 ++++++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/parserc.c b/src/parserc.c index 1869a2b0e..787f0c1fc 100644 --- a/src/parserc.c +++ b/src/parserc.c @@ -163,6 +163,13 @@ setIntValueFromInt (const gchar * lvalue, int value, Settings rc[]) return result; } +gchar * + +getSystemThemeDir (void) +{ + return g_build_filename (DATADIR, "themes", DEFAULT_THEME, "xfwm4", NULL); +} + gchar * getThemeDir (const gchar * theme, const gchar * file) { @@ -179,8 +186,7 @@ getThemeDir (const gchar * theme, const gchar * file) } else { - return g_build_filename (DATADIR, "themes", DEFAULT_THEME, - "xfwm4", NULL); + return getSystemThemeDir (); } } else @@ -205,7 +211,7 @@ getThemeDir (const gchar * theme, const gchar * file) } /* Pfew, really can't find that theme nowhere! */ - return g_build_filename (DATADIR, "themes", DEFAULT_THEME, "xfwm4", NULL); + return getSystemThemeDir (); } void diff --git a/src/parserc.h b/src/parserc.h index fd13688cb..5fa0e3f5a 100644 --- a/src/parserc.h +++ b/src/parserc.h @@ -35,6 +35,7 @@ gchar *getValue (const gchar *, Settings rc[]); gboolean setValue (const gchar *, const gchar *, Settings rc[]); gboolean setBooleanValueFromInt (const gchar *, int, Settings rc[]); gboolean setIntValueFromInt (const gchar *, int, Settings rc[]); +gchar *getSystemThemeDir (void); gchar *getThemeDir (const gchar *, const gchar *); void freeRc (Settings rc[]); diff --git a/src/settings.c b/src/settings.c index 37bd16bc7..f8abadc60 100644 --- a/src/settings.c +++ b/src/settings.c @@ -334,8 +334,10 @@ static void loadRcData (ScreenInfo *screen_info, Settings rc[]) { gchar *homedir; - gchar *keytheme; gchar *keythemevalue; + gchar *keytheme; + gchar *system_keytheme; + if (!parseRc ("defaults", PACKAGE_DATADIR, rc)) { @@ -345,8 +347,16 @@ loadRcData (ScreenInfo *screen_info, Settings rc[]) keythemevalue = getValue ("keytheme", rc); if (keythemevalue) { + system_keytheme = getSystemThemeDir (); + parseRc (KEYTHEMERC, system_keytheme, rc); + keytheme = getThemeDir (keythemevalue, KEYTHEMERC); - parseRc (KEYTHEMERC, keytheme, rc); + if (strcmp (keytheme, keytheme)) + { + /* If there is a custom key theme, merge it with system defaults */ + parseRc (KEYTHEMERC, keytheme, rc); + } + g_free (system_keytheme); g_free (keytheme); } homedir = xfce_resource_save_location (XFCE_RESOURCE_CONFIG, -- GitLab