diff --git a/src/action/client.h b/src/action/client.h index aa41e9c8..b12f8cef 100644 --- a/src/action/client.h +++ b/src/action/client.h @@ -127,7 +127,7 @@ void client_add_group_bar(Client *c) { : LyrTile; c->group_bar = mango_group_bar_create(c, GroupBar, layers[layer], - config.tabdata, 0, 0); + config.groupbardata, 0, 0); wlr_scene_node_lower_to_bottom(&c->group_bar->scene_buffer->node); wlr_scene_node_set_enabled(&c->group_bar->scene_buffer->node, false); mango_group_bar_update(c->group_bar, client_get_title(c), @@ -264,4 +264,21 @@ void client_set_group_mon(Client *c, Monitor *m) { client_change_mon(cur, m); cur = cur->group_next; } +} + +void client_set_group_config(Client *c) { + Client *head = c; + while (head->group_prev) + head = head->group_prev; + + Client *cur = head; + while (cur) { + mango_jump_label_node_apply_config(cur->jump_label_node, + &config.jumplabeldata); + wlr_scene_rect_set_color(cur->droparea, config.dropcolor); + wlr_scene_rect_set_color(cur->splitindicator[0], config.splitcolor); + wlr_scene_rect_set_color(cur->splitindicator[1], config.splitcolor); + mango_group_bar_apply_config(cur->group_bar, &config.groupbardata); + cur = cur->group_next; + } } \ No newline at end of file diff --git a/src/config/parse_config.h b/src/config/parse_config.h index 09847014..3b7384a3 100644 --- a/src/config/parse_config.h +++ b/src/config/parse_config.h @@ -418,7 +418,7 @@ typedef struct { struct xkb_context *ctx; struct xkb_keymap *keymap; DecorateDrawData jumplabeldata; - DecorateDrawData tabdata; + DecorateDrawData groupbardata; int32_t hdr_depth; } Config; @@ -1786,7 +1786,7 @@ bool parse_option(Config *config, char *key, char *value) { } else if (strcmp(key, "cursor_theme") == 0) { config->cursor_theme = strdup(value); } else if (strcmp(key, "group_bar_decorate_font_desc") == 0) { - config->tabdata.font_desc = strdup(value); + config->groupbardata.font_desc = strdup(value); } else if (strcmp(key, "group_bar_decorate_fg_color") == 0) { int64_t color = parse_color(value); if (color == -1) { @@ -1797,7 +1797,7 @@ bool parse_option(Config *config, char *key, char *value) { value); return false; } else { - convert_hex_to_rgba(config->tabdata.fg_color, color); + convert_hex_to_rgba(config->groupbardata.fg_color, color); } } else if (strcmp(key, "group_bar_decorate_bg_color") == 0) { int64_t color = parse_color(value); @@ -1809,7 +1809,7 @@ bool parse_option(Config *config, char *key, char *value) { value); return false; } else { - convert_hex_to_rgba(config->tabdata.bg_color, color); + convert_hex_to_rgba(config->groupbardata.bg_color, color); } } else if (strcmp(key, "group_bar_decorate_focus_fg_color") == 0) { int64_t color = parse_color(value); @@ -1821,7 +1821,7 @@ bool parse_option(Config *config, char *key, char *value) { value); return false; } else { - convert_hex_to_rgba(config->tabdata.focus_fg_color, color); + convert_hex_to_rgba(config->groupbardata.focus_fg_color, color); } } else if (strcmp(key, "group_bar_decorate_focus_bg_color") == 0) { int64_t color = parse_color(value); @@ -1833,7 +1833,7 @@ bool parse_option(Config *config, char *key, char *value) { value); return false; } else { - convert_hex_to_rgba(config->tabdata.focus_bg_color, color); + convert_hex_to_rgba(config->groupbardata.focus_bg_color, color); } } else if (strcmp(key, "group_bar_decorate_border_color") == 0) { int64_t color = parse_color(value); @@ -1845,16 +1845,16 @@ bool parse_option(Config *config, char *key, char *value) { value); return false; } else { - convert_hex_to_rgba(config->tabdata.border_color, color); + convert_hex_to_rgba(config->groupbardata.border_color, color); } } else if (strcmp(key, "group_bar_decorate_border_width") == 0) { - config->tabdata.border_width = CLAMP_INT(atoi(value), 0, 100); + config->groupbardata.border_width = CLAMP_INT(atoi(value), 0, 100); } else if (strcmp(key, "group_bar_decorate_corner_radius") == 0) { - config->tabdata.corner_radius = CLAMP_INT(atoi(value), 0, 100); + config->groupbardata.corner_radius = CLAMP_INT(atoi(value), 0, 100); } else if (strcmp(key, "group_bar_decorate_padding_x") == 0) { - config->tabdata.padding_x = CLAMP_INT(atoi(value), 0, 100); + config->groupbardata.padding_x = CLAMP_INT(atoi(value), 0, 100); } else if (strcmp(key, "group_bar_decorate_padding_y") == 0) { - config->tabdata.padding_y = CLAMP_INT(atoi(value), 0, 100); + config->groupbardata.padding_y = CLAMP_INT(atoi(value), 0, 100); } else if (strcmp(key, "jump_label_decorate_font_desc") == 0) { config->jumplabeldata.font_desc = strdup(value); } else if (strcmp(key, "jump_label_decorate_fg_color") == 0) { @@ -3430,9 +3430,9 @@ void free_config(void) { config.jumplabeldata.font_desc = NULL; } - if (config.tabdata.font_desc) { - free((void *)config.tabdata.font_desc); - config.tabdata.font_desc = NULL; + if (config.groupbardata.font_desc) { + free((void *)config.groupbardata.font_desc); + config.groupbardata.font_desc = NULL; } if (config.tablet_map_to_mon) { @@ -3628,12 +3628,14 @@ void override_config(void) { config.unfocused_opacity = CLAMP_FLOAT(config.unfocused_opacity, 0.0f, 1.0f); - config.tabdata.border_width = - CLAMP_INT(config.tabdata.border_width, 0, 100); - config.tabdata.corner_radius = - CLAMP_INT(config.tabdata.corner_radius, 0, 100); - config.tabdata.padding_x = CLAMP_INT(config.tabdata.padding_x, 0, 100); - config.tabdata.padding_y = CLAMP_INT(config.tabdata.padding_y, 0, 100); + config.groupbardata.border_width = + CLAMP_INT(config.groupbardata.border_width, 0, 100); + config.groupbardata.corner_radius = + CLAMP_INT(config.groupbardata.corner_radius, 0, 100); + config.groupbardata.padding_x = + CLAMP_INT(config.groupbardata.padding_x, 0, 100); + config.groupbardata.padding_y = + CLAMP_INT(config.groupbardata.padding_y, 0, 100); config.jumplabeldata.border_width = CLAMP_INT(config.jumplabeldata.border_width, 0, 100); @@ -3819,30 +3821,30 @@ void set_value_default() { config.animation_curve_opafadeout[2] = 0.5; config.animation_curve_opafadeout[3] = 0.5; - config.tabdata.fg_color[0] = 0xc4 / 255.0f; - config.tabdata.fg_color[1] = 0x93 / 255.0f; - config.tabdata.fg_color[2] = 0x9d / 255.0f; - config.tabdata.fg_color[3] = 1.0f; - config.tabdata.bg_color[0] = 0x32 / 255.0f; - config.tabdata.bg_color[1] = 0x32 / 255.0f; - config.tabdata.bg_color[2] = 0x32 / 255.0f; - config.tabdata.bg_color[3] = 1.0f; - config.tabdata.focus_fg_color[0] = 0xed / 255.0f; - config.tabdata.focus_fg_color[1] = 0xa6 / 255.0f; - config.tabdata.focus_fg_color[2] = 0xb4 / 255.0f; - config.tabdata.focus_fg_color[3] = 1.0f; - config.tabdata.focus_bg_color[0] = 0x4e / 255.0f; - config.tabdata.focus_bg_color[1] = 0x45 / 255.0f; - config.tabdata.focus_bg_color[2] = 0x3c / 255.0f; - config.tabdata.focus_bg_color[3] = 1.0f; - config.tabdata.border_color[0] = 0x8b / 255.0f; - config.tabdata.border_color[1] = 0xaa / 255.0f; - config.tabdata.border_color[2] = 0x9b / 255.0f; - config.tabdata.border_color[3] = 1.0f; - config.tabdata.border_width = 4; - config.tabdata.corner_radius = 5; - config.tabdata.padding_x = 0; - config.tabdata.padding_y = 0; + config.groupbardata.fg_color[0] = 0xc4 / 255.0f; + config.groupbardata.fg_color[1] = 0x93 / 255.0f; + config.groupbardata.fg_color[2] = 0x9d / 255.0f; + config.groupbardata.fg_color[3] = 1.0f; + config.groupbardata.bg_color[0] = 0x32 / 255.0f; + config.groupbardata.bg_color[1] = 0x32 / 255.0f; + config.groupbardata.bg_color[2] = 0x32 / 255.0f; + config.groupbardata.bg_color[3] = 1.0f; + config.groupbardata.focus_fg_color[0] = 0xed / 255.0f; + config.groupbardata.focus_fg_color[1] = 0xa6 / 255.0f; + config.groupbardata.focus_fg_color[2] = 0xb4 / 255.0f; + config.groupbardata.focus_fg_color[3] = 1.0f; + config.groupbardata.focus_bg_color[0] = 0x4e / 255.0f; + config.groupbardata.focus_bg_color[1] = 0x45 / 255.0f; + config.groupbardata.focus_bg_color[2] = 0x3c / 255.0f; + config.groupbardata.focus_bg_color[3] = 1.0f; + config.groupbardata.border_color[0] = 0x8b / 255.0f; + config.groupbardata.border_color[1] = 0xaa / 255.0f; + config.groupbardata.border_color[2] = 0x9b / 255.0f; + config.groupbardata.border_color[3] = 1.0f; + config.groupbardata.border_width = 4; + config.groupbardata.corner_radius = 5; + config.groupbardata.padding_x = 0; + config.groupbardata.padding_y = 0; config.jumplabeldata.fg_color[0] = 0xc4 / 255.0f; config.jumplabeldata.fg_color[1] = 0x93 / 255.0f; @@ -3982,7 +3984,7 @@ bool parse_config(void) { config.tag_rules_count = 0; config.cursor_theme = NULL; config.jumplabeldata.font_desc = NULL; - config.tabdata.font_desc = NULL; + config.groupbardata.font_desc = NULL; config.tablet_map_to_mon = NULL; strcpy(config.keymode, "default"); @@ -4156,14 +4158,7 @@ void reapply_property(void) { if (!c->isnoborder && !c->isfullscreen) { c->bw = config.borderpx; } - - mango_jump_label_node_apply_config(c->jump_label_node, - &config.jumplabeldata); - mango_group_bar_apply_config(c->group_bar, &config.tabdata); - - wlr_scene_rect_set_color(c->droparea, config.dropcolor); - wlr_scene_rect_set_color(c->splitindicator[0], config.splitcolor); - wlr_scene_rect_set_color(c->splitindicator[1], config.splitcolor); + client_set_group_config(c); } } } diff --git a/src/mango.c b/src/mango.c index 29859377..4bd01ba5 100644 --- a/src/mango.c +++ b/src/mango.c @@ -963,6 +963,7 @@ static bool mango_scene_output_commit(struct wlr_scene_output *scene_output, struct wlr_output_state *state); static bool mango_output_commit(Monitor *m); static bool check_tearing_frame_allow(Monitor *m); +static void client_set_group_config(Client *c); #include "data/static_keymap.h" #include "dispatch/bind_declare.h"