summaryrefslogtreecommitdiff
path: root/sway/config.c
diff options
context:
space:
mode:
authorHugo Osvaldo Barrera <[email protected]>2021-08-18 23:27:01 +0200
committerSimon Ser <[email protected]>2021-08-26 20:16:14 +0200
commit62d90a8e959c6edcc752e124a9928cfa2399fbd1 (patch)
treed7f26db04a7a57b3b304768631348e8450197ba4 /sway/config.c
parentbb3fd0abc56f39e35dc7f4e86f25da1b4a6efbd7 (diff)
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.
Diffstat (limited to 'sway/config.c')
-rw-r--r--sway/config.c26
1 files changed, 3 insertions, 23 deletions
diff --git a/sway/config.c b/sway/config.c
index fde386c7..1ddedc7e 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -991,31 +991,11 @@ int workspace_output_cmp_workspace(const void *a, const void *b) {
return lenient_strcmp(wsa->workspace, wsb->workspace);
}
-static void find_font_height_iterator(struct sway_container *con, void *data) {
- size_t amount_below_baseline = con->title_height - con->title_baseline;
- size_t extended_height = config->font_baseline + amount_below_baseline;
- if (extended_height > config->font_height) {
- config->font_height = extended_height;
- }
-}
-
-static void find_baseline_iterator(struct sway_container *con, void *data) {
- bool *recalculate = data;
- if (*recalculate) {
- container_calculate_title_height(con);
- }
- if (con->title_baseline > config->font_baseline) {
- config->font_baseline = con->title_baseline;
- }
-}
-void config_update_font_height(bool recalculate) {
- size_t prev_max_height = config->font_height;
- config->font_height = 0;
- config->font_baseline = 0;
+void config_update_font_height(void) {
+ int prev_max_height = config->font_height;
- root_for_each_container(find_baseline_iterator, &recalculate);
- root_for_each_container(find_font_height_iterator, NULL);
+ get_text_metrics(config->font, &config->font_height, &config->font_baseline);
if (config->font_height != prev_max_height) {
arrange_root();