Merge pull request #3397 from RedSoxFan/fix-swaybar-height

swaybar: obey height if given
master
Drew DeVault 6 years ago committed by GitHub
commit fc93cd20dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -96,7 +96,7 @@ struct bar_config *default_bar_config(void) {
bar->pango_markup = false; bar->pango_markup = false;
bar->swaybar_command = NULL; bar->swaybar_command = NULL;
bar->font = NULL; bar->font = NULL;
bar->height = -1; bar->height = 0;
bar->workspace_buttons = true; bar->workspace_buttons = true;
bar->wrap_scroll = false; bar->wrap_scroll = false;
bar->separator_symbol = NULL; bar->separator_symbol = NULL;

@ -69,7 +69,7 @@ Sway allows configuring swaybar in the sway configuration file.
use. use.
*height* <height> *height* <height>
Sets the height of the bar. Default height will match the font size. Sets the height of the bar. Default height (0) will match the font size.
*bindsym* [--release] button<n> <command> *bindsym* [--release] button<n> <command>
Executes _command_ when mouse button _n_ has been pressed (or if _released_ Executes _command_ when mouse button _n_ has been pressed (or if _released_

@ -45,7 +45,8 @@ static uint32_t render_status_line_error(cairo_t *cairo,
uint32_t ideal_height = text_height + ws_vertical_padding * 2; uint32_t ideal_height = text_height + ws_vertical_padding * 2;
uint32_t ideal_surface_height = ideal_height / output->scale; uint32_t ideal_surface_height = ideal_height / output->scale;
if (output->height < ideal_surface_height) { if (!output->bar->config->height &&
output->height < ideal_surface_height) {
return ideal_surface_height; return ideal_surface_height;
} }
*x -= text_width + margin; *x -= text_width + margin;
@ -77,7 +78,8 @@ static uint32_t render_status_line_text(cairo_t *cairo,
uint32_t ideal_height = text_height + ws_vertical_padding * 2; uint32_t ideal_height = text_height + ws_vertical_padding * 2;
uint32_t ideal_surface_height = ideal_height / output->scale; uint32_t ideal_surface_height = ideal_height / output->scale;
if (output->height < ideal_surface_height) { if (!output->bar->config->height &&
output->height < ideal_surface_height) {
return ideal_surface_height; return ideal_surface_height;
} }
@ -164,7 +166,8 @@ static uint32_t render_status_block(cairo_t *cairo,
double block_width = width; double block_width = width;
uint32_t ideal_height = text_height + ws_vertical_padding * 2; uint32_t ideal_height = text_height + ws_vertical_padding * 2;
uint32_t ideal_surface_height = ideal_height / output->scale; uint32_t ideal_surface_height = ideal_height / output->scale;
if (output->height < ideal_surface_height) { if (!output->bar->config->height &&
output->height < ideal_surface_height) {
return ideal_surface_height; return ideal_surface_height;
} }
@ -186,7 +189,8 @@ static uint32_t render_status_block(cairo_t *cairo,
output->scale, false, "%s", config->sep_symbol); output->scale, false, "%s", config->sep_symbol);
uint32_t _ideal_height = sep_height + ws_vertical_padding * 2; uint32_t _ideal_height = sep_height + ws_vertical_padding * 2;
uint32_t _ideal_surface_height = _ideal_height / output->scale; uint32_t _ideal_surface_height = _ideal_height / output->scale;
if (output->height < _ideal_surface_height) { if (!output->bar->config->height &&
output->height < _ideal_surface_height) {
return _ideal_surface_height; return _ideal_surface_height;
} }
if (sep_width > sep_block_width) { if (sep_width > sep_block_width) {
@ -333,7 +337,8 @@ static uint32_t render_binding_mode_indicator(cairo_t *cairo,
uint32_t ideal_height = text_height + ws_vertical_padding * 2 uint32_t ideal_height = text_height + ws_vertical_padding * 2
+ border_width * 2; + border_width * 2;
uint32_t ideal_surface_height = ideal_height / output->scale; uint32_t ideal_surface_height = ideal_height / output->scale;
if (output->height < ideal_surface_height) { if (!output->bar->config->height &&
output->height < ideal_surface_height) {
return ideal_surface_height; return ideal_surface_height;
} }
uint32_t width = text_width + ws_horizontal_padding * 2 + border_width * 2; uint32_t width = text_width + ws_horizontal_padding * 2 + border_width * 2;
@ -399,7 +404,8 @@ static uint32_t render_workspace_button(cairo_t *cairo,
uint32_t ideal_height = ws_vertical_padding * 2 + text_height uint32_t ideal_height = ws_vertical_padding * 2 + text_height
+ border_width * 2; + border_width * 2;
uint32_t ideal_surface_height = ideal_height / output->scale; uint32_t ideal_surface_height = ideal_height / output->scale;
if (output->height < ideal_surface_height) { if (!output->bar->config->height &&
output->height < ideal_surface_height) {
return ideal_surface_height; return ideal_surface_height;
} }
@ -526,7 +532,7 @@ void render_frame(struct swaybar_output *output) {
cairo_restore(cairo); cairo_restore(cairo);
uint32_t height = render_to_cairo(cairo, output); uint32_t height = render_to_cairo(cairo, output);
int config_height = output->bar->config->height; int config_height = output->bar->config->height;
if (config_height >= 0 && height < (uint32_t)config_height) { if (config_height > 0) {
height = config_height; height = config_height;
} }
if (height != output->height || output->width == 0) { if (height != output->height || output->width == 0) {

Loading…
Cancel
Save