aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree/view.c
diff options
context:
space:
mode:
authorLibravatar Arthur Gautier <baloo@gandi.net>2018-11-23 17:42:18 -0800
committerLibravatar Arthur Gautier <baloo@gandi.net>2018-11-24 08:26:43 -0800
commitcaee2dff03fc007dc46cf121e013f5347ac46ba9 (patch)
treeb8fa2f22a25ab6e95d15398a6c57ffb38f62f4a3 /sway/tree/view.c
parentMerge pull request #3158 from emersion/get-outputs-focused (diff)
downloadsway-caee2dff03fc007dc46cf121e013f5347ac46ba9.tar.gz
sway-caee2dff03fc007dc46cf121e013f5347ac46ba9.tar.zst
sway-caee2dff03fc007dc46cf121e013f5347ac46ba9.zip
fixes pango_markup support with title_format
The support for pango_markup was broken in title_format because the formated title was escaped. I think only the payload should be escaped. This commit fixes 789a877b379cd35c350610be62b971ae00feb542
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c34
1 files changed, 20 insertions, 14 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index d7110619..63bb8e26 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -824,12 +824,30 @@ struct sway_view *view_from_wlr_surface(struct wlr_surface *wlr_surface) {
824 return NULL; 824 return NULL;
825} 825}
826 826
827static char *escape_pango_markup(const char *buffer) {
828 size_t length = escape_markup_text(buffer, NULL);
829 char *escaped_title = calloc(length + 1, sizeof(char));
830 escape_markup_text(buffer, escaped_title);
831 return escaped_title;
832}
833
827static size_t append_prop(char *buffer, const char *value) { 834static size_t append_prop(char *buffer, const char *value) {
828 if (!value) { 835 if (!value) {
829 return 0; 836 return 0;
830 } 837 }
831 lenient_strcat(buffer, value); 838 // if using pango_markup in font, we need to escape all markup char
832 return strlen(value); 839 // from values to avoid messing with pango markup
840 if (!config->pango_markup) {
841 char *escaped_value = escape_pango_markup(value);
842
843 lenient_strcat(buffer, escaped_value);
844 size_t len = strlen(escaped_value);
845 free(escaped_value);
846 return len;
847 } else {
848 lenient_strcat(buffer, value);
849 return strlen(value);
850 }
833} 851}
834 852
835/** 853/**
@@ -882,14 +900,6 @@ static size_t parse_title_format(struct sway_view *view, char *buffer) {
882 return len; 900 return len;
883} 901}
884 902
885static char *escape_title(char *buffer) {
886 size_t length = escape_markup_text(buffer, NULL);
887 char *escaped_title = calloc(length + 1, sizeof(char));
888 escape_markup_text(buffer, escaped_title);
889 free(buffer);
890 return escaped_title;
891}
892
893void view_update_title(struct sway_view *view, bool force) { 903void view_update_title(struct sway_view *view, bool force) {
894 const char *title = view_get_title(view); 904 const char *title = view_get_title(view);
895 905
@@ -912,10 +922,6 @@ void view_update_title(struct sway_view *view, bool force) {
912 return; 922 return;
913 } 923 }
914 parse_title_format(view, buffer); 924 parse_title_format(view, buffer);
915 // now we have the title, but needs to be escaped when using pango markup
916 if (config->pango_markup) {
917 buffer = escape_title(buffer);
918 }
919 925
920 view->container->title = strdup(title); 926 view->container->title = strdup(title);
921 view->container->formatted_title = buffer; 927 view->container->formatted_title = buffer;