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
This commit is contained in:
o9000 2015-03-20 21:54:07 +00:00 committed by mrovi9000@gmail.com
parent f5a18cc4f4
commit 83b6d1ac72
6 changed files with 24 additions and 13 deletions

View file

@ -635,8 +635,9 @@ void add_entry (char *key, char *value)
}
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);

View file

@ -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 @@ void default_launcher()
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 @@ void cleanup_launcher()
}
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 @@ void launcher_load_icons(Launcher *launcher)
// 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");
}

View file

@ -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

View file

@ -51,12 +51,12 @@ void xsettings_notify_cb (const char *name, XSettingsAction action, XSettingsSet
//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++) {

View file

@ -1867,6 +1867,7 @@ void create_launcher(GtkWidget *parent)
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);

View file

@ -387,7 +387,7 @@ void config_write_launcher(FILE *fp)
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;