summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2024-04-17 13:43:23 +0300
committerGeorge Hazan <george.hazan@gmail.com>2024-04-17 13:43:23 +0300
commit654fd5f8cc5693b7cd7c47c9a485ff0eb98a71bb (patch)
tree64712da53bd2a575b64bfda94c974815b353a0c0
parent3693cff5d58818b9513e3320dd37d8971899cb80 (diff)
fixes #4348 (NewStory: табуляция в режиме просмотра съедается, а в режиме редактирования нет)
-rw-r--r--plugins/NewStory/src/templates.cpp9
-rw-r--r--protocols/Telegram/src/utils.cpp15
2 files changed, 18 insertions, 6 deletions
diff --git a/plugins/NewStory/src/templates.cpp b/plugins/NewStory/src/templates.cpp
index 4172521496..d6c0472836 100644
--- a/plugins/NewStory/src/templates.cpp
+++ b/plugins/NewStory/src/templates.cpp
@@ -175,6 +175,15 @@ static void AppendString(CMStringW &buf, const wchar_t *p, ItemData *pItem)
p = p1 + 5;
}
}
+ else if (!wcsncmp(p, L"code]", 5)) {
+ p += 5;
+
+ if (auto *p1 = wcsstr(p, L"[/code]")) {
+ CMStringW wszUrl(p, int(p1 - p));
+ buf.AppendFormat(L"<pre>%s</pre>", wszUrl.c_str());
+ p = p1 + 6;
+ }
+ }
else {
buf.AppendChar('[');
if (*pEnd == '/')
diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp
index faf52c94d0..34201b930d 100644
--- a/protocols/Telegram/src/utils.cpp
+++ b/protocols/Telegram/src/utils.cpp
@@ -19,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
enum class BBCODE
{
- BOLD, ITALIC, STRIKE, UNDERLINE, URL
+ BOLD, ITALIC, STRIKE, UNDERLINE, URL, CODE
};
struct
@@ -30,11 +30,12 @@ struct
}
static bbCodes[] =
{
- { BBCODE::BOLD, L"[b]", L"[/b]", 3, 4 },
- { BBCODE::ITALIC, L"[i]", L"[/i]", 3, 4 },
- { BBCODE::STRIKE, L"[s]", L"[/s]", 3, 4 },
- { BBCODE::UNDERLINE, L"[u]", L"[/u]", 3, 4 },
- { BBCODE::URL, L"[url]", L"[/url]", 5, 6 },
+ { BBCODE::BOLD, L"[b]", L"[/b]", 3, 4 },
+ { BBCODE::ITALIC, L"[i]", L"[/i]", 3, 4 },
+ { BBCODE::STRIKE, L"[s]", L"[/s]", 3, 4 },
+ { BBCODE::UNDERLINE, L"[u]", L"[/u]", 3, 4 },
+ { BBCODE::URL, L"[url]", L"[/url]", 5, 6 },
+ { BBCODE::CODE, L"[code]", L"[/code]", 6, 7 },
};
TD::object_ptr<TD::formattedText> formatBbcodes(const char *pszText)
@@ -65,6 +66,7 @@ TD::object_ptr<TD::formattedText> formatBbcodes(const char *pszText)
TD::object_ptr<TD::TextEntityType> pNew;
switch (it.type) {
case BBCODE::URL: pNew = TD::make_object<TD::textEntityTypeUrl>(); break;
+ case BBCODE::CODE: pNew = TD::make_object<TD::textEntityTypeCode>(); break;
case BBCODE::BOLD: pNew = TD::make_object<TD::textEntityTypeBold>(); break;
case BBCODE::ITALIC: pNew = TD::make_object<TD::textEntityTypeItalic>(); break;
case BBCODE::STRIKE: pNew = TD::make_object<TD::textEntityTypeStrikethrough>(); break;
@@ -94,6 +96,7 @@ static CMStringA getFormattedText(TD::object_ptr<TD::formattedText> &pText)
case TD::textEntityTypeStrikethrough::ID: iCode = 2; break;
case TD::textEntityTypeUnderline::ID: iCode = 3; break;
case TD::textEntityTypeUrl::ID: iCode = 4; break;
+ case TD::textEntityTypeCode::ID: iCode = 5; break;
default:
continue;
}