aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-05-05 18:25:31 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-05-05 22:29:37 +1000
commit5d6d24e71aabc026c99ac736c788fa8103658c42 (patch)
treefe0fd2a72ceeb282a335692ebd53f618c476ab21
parentRefactor parse_title_format() (diff)
downloadsway-5d6d24e71aabc026c99ac736c788fa8103658c42.tar.gz
sway-5d6d24e71aabc026c99ac736c788fa8103658c42.tar.zst
sway-5d6d24e71aabc026c99ac736c788fa8103658c42.zip
Move code for re-arranging after font height change into a common place
-rw-r--r--include/sway/config.h5
-rw-r--r--sway/commands/font.c6
-rw-r--r--sway/commands/title_format.c4
-rw-r--r--sway/config.c9
-rw-r--r--sway/tree/view.c7
5 files changed, 15 insertions, 16 deletions
diff --git a/include/sway/config.h b/include/sway/config.h
index db942c3f..fa40ef4e 100644
--- a/include/sway/config.h
+++ b/include/sway/config.h
@@ -465,8 +465,11 @@ void free_bar_config(struct bar_config *bar);
465 * Updates the value of config->font_height based on the max title height 465 * Updates the value of config->font_height based on the max title height
466 * reported by each container. If recalculate is true, the containers will 466 * reported by each container. If recalculate is true, the containers will
467 * recalculate their heights before reporting. 467 * recalculate their heights before reporting.
468 *
469 * If the height has changed, all containers will be rearranged to take on the
470 * new size.
468 */ 471 */
469void config_find_font_height(bool recalculate); 472void config_update_font_height(bool recalculate);
470 473
471/* Global config singleton. */ 474/* Global config singleton. */
472extern struct sway_config *config; 475extern struct sway_config *config;
diff --git a/sway/commands/font.c b/sway/commands/font.c
index 38ad8880..8e0b51e3 100644
--- a/sway/commands/font.c
+++ b/sway/commands/font.c
@@ -2,7 +2,6 @@
2#include <string.h> 2#include <string.h>
3#include "sway/commands.h" 3#include "sway/commands.h"
4#include "sway/config.h" 4#include "sway/config.h"
5#include "sway/tree/arrange.h"
6#include "log.h" 5#include "log.h"
7#include "stringop.h" 6#include "stringop.h"
8 7
@@ -14,9 +13,6 @@ struct cmd_results *cmd_font(int argc, char **argv) {
14 char *font = join_args(argv, argc); 13 char *font = join_args(argv, argc);
15 free(config->font); 14 free(config->font);
16 config->font = strdup(font); 15 config->font = strdup(font);
17 config_find_font_height(true); 16 config_update_font_height(true);
18 if (!config->reading) {
19 arrange_root();
20 }
21 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 17 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
22} 18}
diff --git a/sway/commands/title_format.c b/sway/commands/title_format.c
index 26ddb2f4..3d1c578c 100644
--- a/sway/commands/title_format.c
+++ b/sway/commands/title_format.c
@@ -2,7 +2,6 @@
2#include <string.h> 2#include <string.h>
3#include "sway/commands.h" 3#include "sway/commands.h"
4#include "sway/config.h" 4#include "sway/config.h"
5#include "sway/tree/arrange.h"
6#include "sway/tree/view.h" 5#include "sway/tree/view.h"
7#include "log.h" 6#include "log.h"
8#include "stringop.h" 7#include "stringop.h"
@@ -25,7 +24,6 @@ struct cmd_results *cmd_title_format(int argc, char **argv) {
25 } 24 }
26 view->title_format = format; 25 view->title_format = format;
27 view_update_title(view, true); 26 view_update_title(view, true);
28 config_find_font_height(true); 27 config_update_font_height(true);
29 arrange_root();
30 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 28 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
31} 29}
diff --git a/sway/config.c b/sway/config.c
index 2e5eab2b..a14f4ec6 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -24,6 +24,7 @@
24#include "sway/input/seat.h" 24#include "sway/input/seat.h"
25#include "sway/commands.h" 25#include "sway/commands.h"
26#include "sway/config.h" 26#include "sway/config.h"
27#include "sway/tree/arrange.h"
27#include "sway/tree/layout.h" 28#include "sway/tree/layout.h"
28#include "cairo.h" 29#include "cairo.h"
29#include "pango.h" 30#include "pango.h"
@@ -741,8 +742,14 @@ static void find_font_height_iterator(struct sway_container *container,
741 } 742 }
742} 743}
743 744
744void config_find_font_height(bool recalculate) { 745void config_update_font_height(bool recalculate) {
746 size_t prev_max_height = config->font_height;
745 config->font_height = 0; 747 config->font_height = 0;
748
746 container_for_each_descendant_dfs(&root_container, 749 container_for_each_descendant_dfs(&root_container,
747 find_font_height_iterator, &recalculate); 750 find_font_height_iterator, &recalculate);
751
752 if (config->font_height != prev_max_height) {
753 arrange_root();
754 }
748} 755}
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 386144f6..851348d8 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -601,10 +601,5 @@ void view_update_title(struct sway_view *view, bool force) {
601 container_calculate_title_height(view->swayc); 601 container_calculate_title_height(view->swayc);
602 container_update_title_textures(view->swayc); 602 container_update_title_textures(view->swayc);
603 container_notify_child_title_changed(view->swayc->parent); 603 container_notify_child_title_changed(view->swayc->parent);
604 604 config_update_font_height(false);
605 size_t prev_max_height = config->font_height;
606 config_find_font_height(false);
607 if (config->font_height != prev_max_height) {
608 arrange_root();
609 }
610} 605}