aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree/view.c
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-05-28 12:03:43 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-05-28 12:03:43 +1000
commit9df1432f56960f1fc6014a631d60dbfab6c21e44 (patch)
treec423cb7dddf8431847476be0316812aaf1f7b9d6 /sway/tree/view.c
parentMerge pull request #2050 from smlx/focus-fix (diff)
downloadsway-9df1432f56960f1fc6014a631d60dbfab6c21e44.tar.gz
sway-9df1432f56960f1fc6014a631d60dbfab6c21e44.tar.zst
sway-9df1432f56960f1fc6014a631d60dbfab6c21e44.zip
Refactor parse_title_format
Don't read properties until needed, and do it with less lines of code.
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c33
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
644static 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, "%");