From 62d90a8e959c6edcc752e124a9928cfa2399fbd1 Mon Sep 17 00:00:00 2001 From: Hugo Osvaldo Barrera Date: Wed, 18 Aug 2021 23:27:01 +0200 Subject: Use fixed titlebar heights Use fixed titlebar heights. The default height is calculated based on font metrics for the configured font and current locale. Some testing with titles with emoji and CJK characters (which are substantially higher in my setup) shows that the titlebars retain their initial value, text does shift up or down, and all titlebars always remain aligned. Also drop some also now-unecessary title_height calculations. Makes also needed to be updated, since they should be positioned with the same rules. --- include/pango.h | 1 + include/sway/config.h | 13 ++++++------- include/sway/tree/container.h | 7 ------- 3 files changed, 7 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/pango.h b/include/pango.h index 75dbba27..7f41441b 100644 --- a/include/pango.h +++ b/include/pango.h @@ -17,6 +17,7 @@ PangoLayout *get_pango_layout(cairo_t *cairo, const char *font, const char *text, double scale, bool markup); void get_text_size(cairo_t *cairo, const char *font, int *width, int *height, int *baseline, double scale, bool markup, const char *fmt, ...); +void get_text_metrics(const char *font, int *height, int *baseline); void pango_printf(cairo_t *cairo, const char *font, double scale, bool markup, const char *fmt, ...); diff --git a/include/sway/config.h b/include/sway/config.h index b8327e9c..d6c29fe6 100644 --- a/include/sway/config.h +++ b/include/sway/config.h @@ -486,8 +486,8 @@ struct sway_config { enum sway_container_layout default_orientation; enum sway_container_layout default_layout; char *font; - size_t font_height; - size_t font_baseline; + int font_height; + int font_baseline; bool pango_markup; int titlebar_border_thickness; int titlebar_h_padding; @@ -696,14 +696,13 @@ void free_bar_binding(struct bar_binding *binding); void free_workspace_config(struct workspace_config *wsc); /** - * Updates the value of config->font_height based on the max title height - * reported by each container. If recalculate is true, the containers will - * recalculate their heights before reporting. - * + * Updates the value of config->font_height based on the metrics for title's + * font as reported by pango. + * * If the height has changed, all containers will be rearranged to take on the * new size. */ -void config_update_font_height(bool recalculate); +void config_update_font_height(void); /** * Convert bindsym into bindcode using the first configured layout. diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h index 38ee68bd..97fa98c1 100644 --- a/include/sway/tree/container.h +++ b/include/sway/tree/container.h @@ -119,8 +119,6 @@ struct sway_container { struct wlr_texture *title_focused_inactive; struct wlr_texture *title_unfocused; struct wlr_texture *title_urgent; - size_t title_height; - size_t title_baseline; list_t *marks; // char * struct wlr_texture *marks_focused; @@ -183,11 +181,6 @@ struct sway_container *container_flatten(struct sway_container *container); void container_update_title_textures(struct sway_container *container); -/** - * Calculate the container's title_height property. - */ -void container_calculate_title_height(struct sway_container *container); - size_t container_build_representation(enum sway_container_layout layout, list_t *children, char *buffer); -- cgit v1.2.3-54-g00ecf