diff options
Diffstat (limited to 'swaybar/render.c')
| -rw-r--r-- | swaybar/render.c | 37 | 
1 files changed, 22 insertions, 15 deletions
diff --git a/swaybar/render.c b/swaybar/render.c index 7cbcea07..12dd3b07 100644 --- a/swaybar/render.c +++ b/swaybar/render.c @@ -35,7 +35,8 @@ static uint32_t render_status_line_error(cairo_t *cairo,  	cairo_set_source_u32(cairo, 0xFF0000FF);  	int margin = 3 * output->scale; -	int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale; +	double ws_vertical_padding = +		output->bar->config->status_padding * output->scale;  	char *font = output->bar->config->font;  	int text_width, text_height; @@ -44,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_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;  	}  	*x -= text_width + margin; @@ -71,12 +73,13 @@ static uint32_t render_status_line_text(cairo_t *cairo,  	get_text_size(cairo, config->font, &text_width, &text_height, NULL,  			output->scale, config->pango_markup, "%s", text); -	int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale; +	double ws_vertical_padding = config->status_padding * output->scale;  	int margin = 3 * output->scale;  	uint32_t ideal_height = text_height + ws_vertical_padding * 2;  	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;  	} @@ -153,7 +156,7 @@ static uint32_t render_status_block(cairo_t *cairo,  			output->scale, block->markup, "%s", block->full_text);  	int margin = 3 * output->scale; -	double ws_vertical_padding = WS_VERTICAL_PADDING * 2 * output->scale; +	double ws_vertical_padding = config->status_padding * output->scale;  	int width = text_width;  	if (width < block->min_width) { @@ -163,7 +166,8 @@ static uint32_t render_status_block(cairo_t *cairo,  	double block_width = width;  	uint32_t ideal_height = text_height + ws_vertical_padding * 2;  	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;  	} @@ -185,7 +189,8 @@ static uint32_t render_status_block(cairo_t *cairo,  					output->scale, false, "%s", config->sep_symbol);  			uint32_t _ideal_height = sep_height + ws_vertical_padding * 2;  			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;  			}  			if (sep_width > sep_block_width) { @@ -193,8 +198,8 @@ static uint32_t render_status_block(cairo_t *cairo,  			}  		}  		*x -= sep_block_width; -	} else { -		*x -= margin; +	} else if (config->status_edge_padding) { +		*x -= config->status_edge_padding * output->scale;  	}  	uint32_t height = output->height * output->scale; @@ -212,8 +217,8 @@ static uint32_t render_status_block(cairo_t *cairo,  	}  	double x_pos = *x; -	double y_pos = WS_VERTICAL_PADDING * output->scale; -	double render_height = height - ws_vertical_padding + output->scale; +	double y_pos = ws_vertical_padding; +	double render_height = height - ws_vertical_padding * 2;  	uint32_t bg_color = block->urgent  		? config->colors.urgent_workspace.background : block->background; @@ -286,7 +291,7 @@ static uint32_t render_status_block(cairo_t *cairo,  static uint32_t render_status_line_i3bar(cairo_t *cairo,  		struct swaybar_output *output, double *x) {  	uint32_t max_height = 0; -	bool edge = true; +	bool edge = *x == output->width * output->scale;  	struct i3bar_block *block;  	wl_list_for_each(block, &output->bar->status->blocks, link) {  		uint32_t h = render_status_block(cairo, output, block, x, edge); @@ -332,7 +337,8 @@ static uint32_t render_binding_mode_indicator(cairo_t *cairo,  	uint32_t ideal_height = text_height + ws_vertical_padding * 2  		+ border_width * 2;  	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;  	}  	uint32_t width = text_width + ws_horizontal_padding * 2 + border_width * 2; @@ -398,7 +404,8 @@ static uint32_t render_workspace_button(cairo_t *cairo,  	uint32_t ideal_height = ws_vertical_padding * 2 + text_height  		+ border_width * 2;  	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;  	} @@ -525,7 +532,7 @@ void render_frame(struct swaybar_output *output) {  	cairo_restore(cairo);  	uint32_t height = render_to_cairo(cairo, output);  	int config_height = output->bar->config->height; -	if (config_height >= 0 && height < (uint32_t)config_height) { +	if (config_height > 0) {  		height = config_height;  	}  	if (height != output->height || output->width == 0) {  | 
