diff options
-rw-r--r-- | sway/tree/view.c | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c index d91182ed..26ff1e8d 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c | |||
@@ -641,6 +641,14 @@ void view_child_destroy(struct sway_view_child *child) { | |||
641 | } | 641 | } |
642 | } | 642 | } |
643 | 643 | ||
644 | static size_t append_prop(char *buffer, const char *value) { | ||
645 | if (!value) { | ||
646 | return 0; | ||
647 | } | ||
648 | lenient_strcat(buffer, value); | ||
649 | return strlen(value); | ||
650 | } | ||
651 | |||
644 | /** | 652 | /** |
645 | * Calculate and return the length of the formatted title. | 653 | * Calculate and return the length of the formatted title. |
646 | * If buffer is not NULL, also populate the buffer with the formatted title. | 654 | * If buffer is not NULL, also populate the buffer with the formatted title. |
@@ -653,16 +661,6 @@ static size_t parse_title_format(struct sway_view *view, char *buffer) { | |||
653 | } | 661 | } |
654 | return title ? strlen(title) : 0; | 662 | return title ? strlen(title) : 0; |
655 | } | 663 | } |
656 | const char *title = view_get_title(view); | ||
657 | const char *app_id = view_get_app_id(view); | ||
658 | const char *class = view_get_class(view); | ||
659 | const char *instance = view_get_instance(view); | ||
660 | const char *shell = view_get_shell(view); | ||
661 | size_t title_len = title ? strlen(title) : 0; | ||
662 | size_t app_id_len = app_id ? strlen(app_id) : 0; | ||
663 | size_t class_len = class ? strlen(class) : 0; | ||
664 | size_t instance_len = instance ? strlen(instance) : 0; | ||
665 | size_t shell_len = shell ? strlen(shell) : 0; | ||
666 | 664 | ||
667 | size_t len = 0; | 665 | size_t len = 0; |
668 | char *format = view->title_format; | 666 | char *format = view->title_format; |
@@ -674,24 +672,19 @@ static size_t parse_title_format(struct sway_view *view, char *buffer) { | |||
674 | format = next; | 672 | format = next; |
675 | 673 | ||
676 | if (strncmp(next, "%title", 6) == 0) { | 674 | if (strncmp(next, "%title", 6) == 0) { |
677 | lenient_strcat(buffer, title); | 675 | len += append_prop(buffer, view_get_title(view)); |
678 | len += title_len; | ||
679 | format += 6; | 676 | format += 6; |
680 | } else if (strncmp(next, "%app_id", 7) == 0) { | 677 | } else if (strncmp(next, "%app_id", 7) == 0) { |
681 | lenient_strcat(buffer, app_id); | 678 | len += append_prop(buffer, view_get_app_id(view)); |
682 | len += app_id_len; | ||
683 | format += 7; | 679 | format += 7; |
684 | } else if (strncmp(next, "%class", 6) == 0) { | 680 | } else if (strncmp(next, "%class", 6) == 0) { |
685 | lenient_strcat(buffer, class); | 681 | len += append_prop(buffer, view_get_class(view)); |
686 | len += class_len; | ||
687 | format += 6; | 682 | format += 6; |
688 | } else if (strncmp(next, "%instance", 9) == 0) { | 683 | } else if (strncmp(next, "%instance", 9) == 0) { |
689 | lenient_strcat(buffer, instance); | 684 | len += append_prop(buffer, view_get_instance(view)); |
690 | len += instance_len; | ||
691 | format += 9; | 685 | format += 9; |
692 | } else if (strncmp(next, "%shell", 6) == 0) { | 686 | } else if (strncmp(next, "%shell", 6) == 0) { |
693 | lenient_strcat(buffer, shell); | 687 | len += append_prop(buffer, view_get_shell(view)); |
694 | len += shell_len; | ||
695 | format += 6; | 688 | format += 6; |
696 | } else { | 689 | } else { |
697 | lenient_strcat(buffer, "%"); | 690 | lenient_strcat(buffer, "%"); |