Merge pull request #2901 from ianyfan/swaybar

swaybar: render with minimum height, nominally text height
This commit is contained in:
emersion 2018-10-20 22:52:56 +02:00 committed by GitHub
commit 3f02218b54
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 7 deletions

View file

@ -28,7 +28,6 @@
static void bar_init(struct swaybar *bar) { static void bar_init(struct swaybar *bar) {
bar->config = init_config(); bar->config = init_config();
bar->visible = true;
wl_list_init(&bar->outputs); wl_list_init(&bar->outputs);
} }
@ -227,9 +226,6 @@ static void xdg_output_handle_done(void *data,
output->surface = wl_compositor_create_surface(bar->compositor); output->surface = wl_compositor_create_surface(bar->compositor);
assert(output->surface); assert(output->surface);
if (bar->visible) {
add_layer_surface(output);
}
} }
} }
@ -377,10 +373,15 @@ bool bar_setup(struct swaybar *bar, const char *socket_path) {
pointer->cursor_surface = wl_compositor_create_surface(bar->compositor); pointer->cursor_surface = wl_compositor_create_surface(bar->compositor);
assert(pointer->cursor_surface); assert(pointer->cursor_surface);
bar->visible = true;
if (bar->config->workspace_buttons) { if (bar->config->workspace_buttons) {
if (ipc_get_workspaces(bar)) { ipc_get_workspaces(bar);
set_bar_dirty(bar);
} }
if (determine_bar_visibility(bar, false)) {
wl_list_for_each(output, &bar->outputs, link) {
add_layer_surface(output);
}
set_bar_dirty(bar);
} }
return true; return true;
} }

View file

@ -448,7 +448,9 @@ static uint32_t render_to_cairo(cairo_t *cairo, struct swaybar_output *output) {
} }
cairo_paint(cairo); cairo_paint(cairo);
uint32_t max_height = 0; int th;
get_text_size(cairo, config->font, NULL, &th, NULL, output->scale, false, "");
uint32_t max_height = (th + WS_VERTICAL_PADDING * 4) / output->scale;
/* /*
* Each render_* function takes the actual height of the bar, and returns * Each render_* function takes the actual height of the bar, and returns
* the ideal height. If the actual height is too short, the render function * the ideal height. If the actual height is too short, the render function