From 05da49e65bd9c3e9badab589edac704d89199e66 Mon Sep 17 00:00:00 2001 From: Bjoern Kerler Date: Mon, 29 Apr 2024 13:20:55 +0200 Subject: [PATCH] Bring back commit #3769 --- src/common/str_utils.cpp | 16 ++++++++++++++++ src/common/str_utils.hpp | 3 +++ src/gui/MItem_menus.cpp | 22 +++++++++++++++++----- src/lang/string_view_utf8.hpp | 5 +++++ 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/common/str_utils.cpp b/src/common/str_utils.cpp index b80f2788ec..6970f198c4 100644 --- a/src/common/str_utils.cpp +++ b/src/common/str_utils.cpp @@ -261,6 +261,22 @@ void StringBuilder::append_string(const char *str) { *current_pos_ = '\0'; } +void StringBuilder::append_string_view(string_view_utf8 str) { + + while (true) { + if (is_problem()) { + return; + } + + char b = str.getbyte(); + if (b == '\0') { + return; + } + + append_char(b); + } +} + void StringBuilder::append_printf(const char *fmt, ...) { va_list args; va_start(args, fmt); diff --git a/src/common/str_utils.hpp b/src/common/str_utils.hpp index 7b1f0288cc..a822d17525 100644 --- a/src/common/str_utils.hpp +++ b/src/common/str_utils.hpp @@ -6,6 +6,7 @@ #include #include #include +#include "../lang/string_view_utf8.hpp" inline constexpr char CHAR_SPACE = ' '; inline constexpr char CHAR_NBSP = '\xA0'; /// Non Breaking Space @@ -384,6 +385,8 @@ class StringBuilder { void append_string(const char *str); + void append_string_view(string_view_utf8 str); + /// Appends text to the builder, using vsnprintf under the hood. void __attribute__((format(__printf__, 2, 3))) append_printf(const char *fmt, ...); diff --git a/src/gui/MItem_menus.cpp b/src/gui/MItem_menus.cpp index 66a81cf800..a5f077d4cf 100644 --- a/src/gui/MItem_menus.cpp +++ b/src/gui/MItem_menus.cpp @@ -1,5 +1,6 @@ #include "MItem_menus.hpp" #include "ScreenHandler.hpp" +#include "str_utils.hpp" #include