summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2017-11-14 21:47:54 +0300
committerGeorge Hazan <ghazan@miranda.im>2017-11-14 21:47:54 +0300
commit854f47adb115f3d03d6a64543178e84877acb0b4 (patch)
treed65fba3dbc59fc89b2b974634894a8057f1be9b1
parentc41a2ded243576506476ccbe1a28625b8918674d (diff)
fixes #1030 (fix for passing BIU buttons to IRC channels in tabSRMM)
-rw-r--r--plugins/TabSRMM/src/msgdlgutils.cpp55
1 files changed, 36 insertions, 19 deletions
diff --git a/plugins/TabSRMM/src/msgdlgutils.cpp b/plugins/TabSRMM/src/msgdlgutils.cpp
index 267374f850..cbafe51bb0 100644
--- a/plugins/TabSRMM/src/msgdlgutils.cpp
+++ b/plugins/TabSRMM/src/msgdlgutils.cpp
@@ -862,6 +862,8 @@ BOOL CTabBaseDlg::DoRtfToTags(CMStringW &pszText) const
}
else idx += 5;
+ MODULEINFO *mi = (isChat()) ? pci->MM_FindModule(m_si->pszModule) : nullptr;
+
bool bInsideColor = false, bInsideUl = false;
CMStringW res;
@@ -883,20 +885,17 @@ BOOL CTabBaseDlg::DoRtfToTags(CMStringW &pszText) const
int iInd = RtfColorToIndex(iNumColors, pIndex, iCol);
if (iCol > 0) {
- if (!isChat())
- res.AppendFormat((iInd >= 0) ? (bInsideColor ? L"[/color][color=%s]" : L"[color=%s]") : (bInsideColor ? L"[/color]" : L""), Utils::rtf_clrs[iInd].szName);
- else {
- MODULEINFO *mi = pci->MM_FindModule(m_si->pszModule);
+ if (isChat()) {
if (mi && mi->bColor)
res.AppendFormat((iInd >= 0) ? L"%%c%u" : L"%%C", iInd);
}
+ else res.AppendFormat((iInd >= 0) ? (bInsideColor ? L"[/color][color=%s]" : L"[color=%s]") : (bInsideColor ? L"[/color]" : L""), Utils::rtf_clrs[iInd].szName);
}
bInsideColor = iInd >= 0;
}
else if (!wcsncmp(p, L"\\highlight", 10)) { // background color
if (isChat()) {
- MODULEINFO *mi = pci->MM_FindModule(m_si->pszModule);
if (mi && mi->bBkgColor) {
int iInd = RtfColorToIndex(iNumColors, pIndex, _wtoi(p + 10));
res.AppendFormat((iInd >= 0) ? L"%%f%u" : L"%%F", iInd);
@@ -928,28 +927,46 @@ BOOL CTabBaseDlg::DoRtfToTags(CMStringW &pszText) const
res.AppendChar(0x2019);
}
else if (!wcsncmp(p, L"\\b", 2)) { //bold
- if (!(lf.lfWeight == FW_BOLD)) // only allow bold if the font itself isn't a bold one, otherwise just strip it..
- if (m_SendFormat)
- res.Append((p[2] != '0') ? L"[b]" : L"[/b]");
+ if (isChat()) {
+ if (mi && mi->bBold)
+ res.Append((p[2] != '0') ? L"%b" : L"%B");
+ }
+ else {
+ if (!(lf.lfWeight == FW_BOLD)) // only allow bold if the font itself isn't a bold one, otherwise just strip it..
+ if (m_SendFormat)
+ res.Append((p[2] != '0') ? L"[b]" : L"[/b]");
+ }
}
else if (!wcsncmp(p, L"\\i", 2)) { // italics
- if (!lf.lfItalic && m_SendFormat)
- res.Append((p[2] != '0') ? L"[i]" : L"[/i]");
+ if (isChat()) {
+ if (mi && mi->bItalics)
+ res.Append((p[2] != '0') ? L"%i" : L"%I");
+ }
+ else {
+ if (!lf.lfItalic && m_SendFormat)
+ res.Append((p[2] != '0') ? L"[i]" : L"[/i]");
+ }
}
else if (!wcsncmp(p, L"\\strike", 7)) { // strike-out
if (!lf.lfStrikeOut && m_SendFormat)
res.Append((p[7] != '0') ? L"[s]" : L"[/s]");
}
else if (!wcsncmp(p, L"\\ul", 3)) { // underlined
- if (!lf.lfUnderline && m_SendFormat) {
- if (p[3] == 0 || wcschr(tszRtfBreaks, p[3])) {
- res.Append(L"[u]");
- bInsideUl = true;
- }
- else if (!wcsncmp(p + 3, L"none", 4)) {
- if (bInsideUl)
- res.Append(L"[/u]");
- bInsideUl = false;
+ if (isChat()) {
+ if (mi && mi->bUnderline)
+ res.Append((p[3] != '0') ? L"%u" : L"%U");
+ }
+ else {
+ if (!lf.lfUnderline && m_SendFormat) {
+ if (p[3] == 0 || wcschr(tszRtfBreaks, p[3])) {
+ res.Append(L"[u]");
+ bInsideUl = true;
+ }
+ else if (!wcsncmp(p + 3, L"none", 4)) {
+ if (bInsideUl)
+ res.Append(L"[/u]");
+ bInsideUl = false;
+ }
}
}
}