Changed launcher_icon_theme option to work as an override. If not present, we use xsettings to obtain the current theme or default to hicolor if xsettings not present git-svn-id: http://tint2.googlecode.com/svn/trunk@733 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
o9000 o9000
6 files changed,
24 insertions(+),
13 deletions(-)
M
src/config.c
→
src/config.c
@@ -635,8 +635,9 @@ free(path);
} else if (strcmp(key, "launcher_icon_theme") == 0) { // if XSETTINGS manager running, tint2 use it. - if (!icon_theme_name) - icon_theme_name = strdup(value); + if (icon_theme_name_config) + free(icon_theme_name_config); + icon_theme_name_config = strdup(value); } else if (strcmp(key, "launcher_icon_asb") == 0) { extract_values(value, &value1, &value2, &value3);
M
src/launcher/launcher.c
→
src/launcher/launcher.c
@@ -52,7 +52,8 @@ int launcher_tooltip_enabled;
int launcher_alpha; int launcher_saturation; int launcher_brightness; -char *icon_theme_name; +char *icon_theme_name_config; +char *icon_theme_name_xsettings; XSettingsClient *xsettings_client; Imlib_Image scale_icon(Imlib_Image original, int icon_size);@@ -66,7 +67,8 @@ launcher_tooltip_enabled = 0;
launcher_alpha = 100; launcher_saturation = 0; launcher_brightness = 0; - icon_theme_name = NULL; + icon_theme_name_config = NULL; + icon_theme_name_xsettings = NULL; xsettings_client = NULL; }@@ -124,8 +126,10 @@ free(l->data);
} g_slist_free(panel_config.launcher.list_apps); panel_config.launcher.list_apps = NULL; - free(icon_theme_name); - icon_theme_name = NULL; + free(icon_theme_name_config); + icon_theme_name_config = NULL; + free(icon_theme_name_xsettings); + icon_theme_name_xsettings = NULL; launcher_enabled = 0; }@@ -474,5 +478,9 @@
// Populates the list_themes list void launcher_load_themes(Launcher *launcher) { - launcher->list_themes = load_themes(icon_theme_name); + launcher->list_themes = load_themes(icon_theme_name_config + ? icon_theme_name_config + : icon_theme_name_xsettings + ? icon_theme_name_xsettings + : "hicolor"); }
M
src/launcher/launcher.h
→
src/launcher/launcher.h
@@ -40,7 +40,8 @@ extern int launcher_tooltip_enabled;
extern int launcher_alpha; extern int launcher_saturation; extern int launcher_brightness; -extern char *icon_theme_name; // theme name +extern char *icon_theme_name_xsettings; // theme name +extern char *icon_theme_name_config; extern XSettingsClient *xsettings_client; // default global data
M
src/launcher/xsettings-client.c
→
src/launcher/xsettings-client.c
@@ -51,12 +51,12 @@ {
//printf("xsettings_notify_cb\n"); if ((action == XSETTINGS_ACTION_NEW || action == XSETTINGS_ACTION_CHANGED) && name != NULL && setting != NULL) { if (!strcmp(name, "Net/IconThemeName") && setting->type == XSETTINGS_TYPE_STRING) { - if (icon_theme_name) { - if (strcmp(icon_theme_name, setting->data.v_string) == 0) + if (icon_theme_name_xsettings) { + if (strcmp(icon_theme_name_xsettings, setting->data.v_string) == 0) return; - free(icon_theme_name); + free(icon_theme_name_xsettings); } - icon_theme_name = strdup(setting->data.v_string); + icon_theme_name_xsettings = strdup(setting->data.v_string); int i; for (i = 0 ; i < nb_panel ; i++) {
M
src/tint2conf/properties.c
→
src/tint2conf/properties.c
@@ -1867,6 +1867,7 @@ gchar *path = g_build_filename(g_get_home_dir(), ".local/share/applications", NULL);
load_desktop_files(path); g_free(path); + icon_theme_changed(); load_icons(launcher_apps); load_icons(all_apps); fprintf(stderr, "Desktop files loaded\n"); fflush(stderr);
M
src/tint2conf/properties_rw.c
→
src/tint2conf/properties_rw.c
@@ -387,7 +387,7 @@ (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(launcher_spacing)));
fprintf(fp, "launcher_background_id = %d\n", 1 + gtk_combo_box_get_active(GTK_COMBO_BOX(launcher_background))); fprintf(fp, "launcher_icon_size = %d\n", (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(launcher_icon_size))); gchar *icon_theme = get_current_icon_theme(); - if (icon_theme) { + if (icon_theme && !g_str_equal(icon_theme, "")) { fprintf(fp, "launcher_icon_theme = %s\n", icon_theme); g_free(icon_theme); icon_theme = NULL;