sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 3b894c387dc38e8715186d5c0171b6048b36c435
parent 66f0c91bb846472a8fb5edb2dde1b67f3a636ccf
Author: Ian Fan <ianfan0@gmail.com>
Date:   Sat, 15 Jun 2019 08:58:24 +0100

tray: allow themes to inherit from multiple themes

Diffstat:
Minclude/swaybar/tray/icon.h | 2+-
Mswaybar/tray/icon.c | 13+++++++++----
2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/include/swaybar/tray/icon.h b/include/swaybar/tray/icon.h @@ -21,7 +21,7 @@ struct icon_theme_subdir { struct icon_theme { char *name; char *comment; - char *inherits; + list_t *inherits; // char * list_t *directories; // char * char *dir; diff --git a/swaybar/tray/icon.c b/swaybar/tray/icon.c @@ -69,7 +69,7 @@ static void destroy_theme(struct icon_theme *theme) { } free(theme->name); free(theme->comment); - free(theme->inherits); + list_free_items_and_destroy(theme->inherits); list_free_items_and_destroy(theme->directories); free(theme->dir); @@ -149,7 +149,7 @@ static const char *entry_handler(char *group, char *key, char *value, } else if (strcmp(key, "Comment") == 0) { theme->comment = strdup(value); } else if (strcmp(key, "Inherits") == 0) { - theme->inherits = strdup(value); + theme->inherits = split_string(value, ","); } else if (strcmp(key, "Directories") == 0) { theme->directories = split_string(value, ","); } // Ignored: ScaledDirectories, Hidden, Example @@ -496,8 +496,13 @@ static char *find_icon_with_theme(list_t *basedirs, list_t *themes, char *name, } if (!icon && theme->inherits) { - icon = find_icon_with_theme(basedirs, themes, name, size, - theme->inherits, min_size, max_size); + for (int i = 0; i < theme->inherits->length; ++i) { + icon = find_icon_with_theme(basedirs, themes, name, size, + theme->inherits->items[i], min_size, max_size); + if (icon) { + break; + } + } } return icon;