swaybar: move mode & mode_pango_markup to bar struct
This distinguishes the binding mode from the distinct config mode, as well as removing mode_pango_markup from the config struct where it should not be present.
This commit is contained in:
parent
a388ffa127
commit
fed11d1c7b
|
@ -47,6 +47,8 @@ struct swaybar_hotspot {
|
||||||
|
|
||||||
struct swaybar {
|
struct swaybar {
|
||||||
char *id;
|
char *id;
|
||||||
|
char *mode;
|
||||||
|
bool mode_pango_markup;
|
||||||
|
|
||||||
struct wl_display *display;
|
struct wl_display *display;
|
||||||
struct wl_compositor *compositor;
|
struct wl_compositor *compositor;
|
||||||
|
|
|
@ -31,7 +31,6 @@ struct swaybar_config {
|
||||||
char *font;
|
char *font;
|
||||||
char *sep_symbol;
|
char *sep_symbol;
|
||||||
char *mode;
|
char *mode;
|
||||||
bool mode_pango_markup;
|
|
||||||
bool strip_workspace_numbers;
|
bool strip_workspace_numbers;
|
||||||
bool binding_mode_indicator;
|
bool binding_mode_indicator;
|
||||||
bool wrap_scroll;
|
bool wrap_scroll;
|
||||||
|
|
|
@ -631,4 +631,5 @@ void bar_teardown(struct swaybar *bar) {
|
||||||
status_line_free(bar->status);
|
status_line_free(bar->status);
|
||||||
}
|
}
|
||||||
free(bar->id);
|
free(bar->id);
|
||||||
|
free(bar->mode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -386,12 +386,8 @@ bool handle_ipc_readable(struct swaybar *bar) {
|
||||||
json_object *json_change, *json_pango_markup;
|
json_object *json_change, *json_pango_markup;
|
||||||
if (json_object_object_get_ex(result, "change", &json_change)) {
|
if (json_object_object_get_ex(result, "change", &json_change)) {
|
||||||
const char *change = json_object_get_string(json_change);
|
const char *change = json_object_get_string(json_change);
|
||||||
free(bar->config->mode);
|
free(bar->mode);
|
||||||
if (strcmp(change, "default") == 0) {
|
bar->mode = strcmp(change, "default") != 0 ? strdup(change) : NULL;
|
||||||
bar->config->mode = NULL;
|
|
||||||
} else {
|
|
||||||
bar->config->mode = strdup(change);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
wlr_log(WLR_ERROR, "failed to parse response");
|
wlr_log(WLR_ERROR, "failed to parse response");
|
||||||
json_object_put(result);
|
json_object_put(result);
|
||||||
|
@ -400,8 +396,7 @@ bool handle_ipc_readable(struct swaybar *bar) {
|
||||||
}
|
}
|
||||||
if (json_object_object_get_ex(result,
|
if (json_object_object_get_ex(result,
|
||||||
"pango_markup", &json_pango_markup)) {
|
"pango_markup", &json_pango_markup)) {
|
||||||
bar->config->mode_pango_markup = json_object_get_boolean(
|
bar->mode_pango_markup = json_object_get_boolean(json_pango_markup);
|
||||||
json_pango_markup);
|
|
||||||
}
|
}
|
||||||
json_object_put(result);
|
json_object_put(result);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -296,11 +296,15 @@ static uint32_t render_status_line(cairo_t *cairo,
|
||||||
|
|
||||||
static uint32_t render_binding_mode_indicator(cairo_t *cairo,
|
static uint32_t render_binding_mode_indicator(cairo_t *cairo,
|
||||||
struct swaybar_output *output, double x) {
|
struct swaybar_output *output, double x) {
|
||||||
|
const char *mode = output->bar->mode;
|
||||||
|
if (!mode) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
struct swaybar_config *config = output->bar->config;
|
struct swaybar_config *config = output->bar->config;
|
||||||
const char *mode = config->mode;
|
|
||||||
int text_width, text_height;
|
int text_width, text_height;
|
||||||
get_text_size(cairo, config->font, &text_width, &text_height, NULL,
|
get_text_size(cairo, config->font, &text_width, &text_height, NULL,
|
||||||
output->scale, config->mode_pango_markup,
|
output->scale, output->bar->mode_pango_markup,
|
||||||
"%s", mode);
|
"%s", mode);
|
||||||
|
|
||||||
int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale;
|
int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale;
|
||||||
|
@ -333,8 +337,8 @@ static uint32_t render_binding_mode_indicator(cairo_t *cairo,
|
||||||
double text_y = height / 2.0 - text_height / 2.0;
|
double text_y = height / 2.0 - text_height / 2.0;
|
||||||
cairo_set_source_u32(cairo, config->colors.binding_mode.text);
|
cairo_set_source_u32(cairo, config->colors.binding_mode.text);
|
||||||
cairo_move_to(cairo, x + width / 2 - text_width / 2, (int)floor(text_y));
|
cairo_move_to(cairo, x + width / 2 - text_width / 2, (int)floor(text_y));
|
||||||
pango_printf(cairo, config->font, output->scale, config->mode_pango_markup,
|
pango_printf(cairo, config->font, output->scale,
|
||||||
"%s", mode);
|
output->bar->mode_pango_markup, "%s", mode);
|
||||||
return output->height;
|
return output->height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -465,7 +469,7 @@ static uint32_t render_to_cairo(cairo_t *cairo, struct swaybar_output *output) {
|
||||||
max_height = h > max_height ? h : max_height;
|
max_height = h > max_height ? h : max_height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (config->binding_mode_indicator && config->mode) {
|
if (config->binding_mode_indicator) {
|
||||||
uint32_t h = render_binding_mode_indicator(cairo, output, x);
|
uint32_t h = render_binding_mode_indicator(cairo, output, x);
|
||||||
max_height = h > max_height ? h : max_height;
|
max_height = h > max_height ? h : max_height;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue