From 61d841d29af086b9f7cbc9b1fd5786ea7644587d Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Tue, 11 Nov 2014 00:16:58 +0100 Subject: [PATCH] wide string: a few adjustments --- src/lyrics.cpp | 2 +- src/utility/wide_string.cpp | 10 +++++----- src/utility/wide_string.h | 7 +++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/lyrics.cpp b/src/lyrics.cpp index 2d0450ff..3677a72e 100644 --- a/src/lyrics.cpp +++ b/src/lyrics.cpp @@ -129,7 +129,7 @@ std::wstring Lyrics::title() std::wstring result = L"Lyrics: "; result += Scroller( - Format::stringify(Format::wparse(L"{%a - %t}"), &itsSong), + Format::stringify(Format::wparse(L"%a - %t"), &itsSong), itsScrollBegin, COLS-result.length()-(Config.design == Design::Alternative ? 2 : Global::VolumeState.length()) ); diff --git a/src/utility/wide_string.cpp b/src/utility/wide_string.cpp index ee1193ca..3f214558 100644 --- a/src/utility/wide_string.cpp +++ b/src/utility/wide_string.cpp @@ -22,14 +22,14 @@ #include #include "utility/wide_string.h" -std::string ToString(std::wstring ws) +std::string ToString(const std::wstring &ws) { - return boost::locale::conv::utf_to_utf(std::move(ws)); + return boost::locale::conv::utf_to_utf(ws); } -std::wstring ToWString(std::string s) +std::wstring ToWString(const std::string &s) { - return boost::locale::conv::utf_to_utf(std::move(s)); + return boost::locale::conv::utf_to_utf(s); } size_t wideLength(const std::wstring &ws) @@ -52,7 +52,7 @@ void wideCut(std::wstring &ws, size_t max_length) int remained_len = max_length; for (; i < ws.length(); ++i) { - remained_len -= wcwidth(ws[i]); + remained_len -= std::max(wcwidth(ws[i]), 1); if (remained_len < 0) { ws.resize(i); diff --git a/src/utility/wide_string.h b/src/utility/wide_string.h index 774aeb15..076dfe95 100644 --- a/src/utility/wide_string.h +++ b/src/utility/wide_string.h @@ -23,14 +23,13 @@ #include -std::string ToString(std::wstring ws); -std::wstring ToWString(std::string s); +std::string ToString(const std::wstring &ws); +std::wstring ToWString(const std::string &s); size_t wideLength(const std::wstring &ws); - void wideCut(std::wstring &ws, size_t max_length); -std::wstring wideShorten(const std::wstring &ws, size_t max_length); +std::wstring wideShorten(const std::wstring &ws, size_t max_length); inline std::string wideShorten(const std::string &s, size_t max_length) { return ToString(wideShorten(ToWString(s), max_length));