summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/mTextControl/src/FormattedTextDraw.cpp38
-rw-r--r--libs/mTextControl/src/FormattedTextDraw.h2
-rw-r--r--libs/mTextControl/src/services.cpp4
-rw-r--r--plugins/ExternalAPI/m_text.h13
-rw-r--r--plugins/Popup/src/popup_wnd2.h16
5 files changed, 20 insertions, 53 deletions
diff --git a/libs/mTextControl/src/FormattedTextDraw.cpp b/libs/mTextControl/src/FormattedTextDraw.cpp
index fc1e84c0ea..e89ab6ad1d 100644
--- a/libs/mTextControl/src/FormattedTextDraw.cpp
+++ b/libs/mTextControl/src/FormattedTextDraw.cpp
@@ -151,46 +151,20 @@ HRESULT CFormattedTextDraw::putTextW(wchar_t *newVal)
return S_OK;
}
-/////////////////////////////////////////////////////////////////////////////////////////
-
-#define STREAMSTAGE_HEADER 0
-#define STREAMSTAGE_EVENTS 1
-#define STREAMSTAGE_TAIL 2
-#define STREAMSTAGE_STOP 3
-
-struct STREAMDATA
-{
- const char *str;
- int lSize, lCount;
-};
-
-static DWORD CALLBACK EditStreamInCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
-{
- auto *dat = (STREAMDATA *)dwCookie;
-
- if (dat->lSize - dat->lCount < cb)
- *pcb = dat->lSize - dat->lCount;
- else
- *pcb = cb;
-
- memcpy(pbBuff, dat->str + dat->lCount, *pcb);
- dat->lCount += *pcb;
- return 0; // callback succeeded - no errors
-}
-
-HRESULT CFormattedTextDraw::putRTFText(MRtfProvider *pProv)
+HRESULT CFormattedTextDraw::putRTFText(char *newVal)
{
if (!m_spTextServices)
return S_FALSE;
- CMStringA buf = pProv->CreateRtfHeader() + pProv->CreateRtfBody() + pProv->CreateRtfFooter();
-
- STREAMDATA streamData = { buf.c_str(), buf.GetLength(), 0 };
+ STREAMDATATEXT streamData = {};
+ streamData.isUnicode = false;
+ streamData.ansi = newVal;
+ streamData.cbSize = mir_strlen(newVal);
EDITSTREAM editStream;
editStream.dwCookie = (DWORD_PTR)&streamData;
editStream.dwError = 0;
- editStream.pfnCallback = EditStreamInCallback;
+ editStream.pfnCallback = EditStreamTextInCallback;
LRESULT lResult = 0;
m_spTextServices->TxSendMessage(EM_STREAMIN, SF_RTF, (LPARAM)&editStream, &lResult);
diff --git a/libs/mTextControl/src/FormattedTextDraw.h b/libs/mTextControl/src/FormattedTextDraw.h
index 3ec7a7412e..f9ff25f2b6 100644
--- a/libs/mTextControl/src/FormattedTextDraw.h
+++ b/libs/mTextControl/src/FormattedTextDraw.h
@@ -38,7 +38,7 @@ public:
HRESULT get_NaturalSize(HDC hdcDraw, long *Width, long *pVal);
HRESULT Draw(HDC hdcDraw, RECT *prc);
- HRESULT putRTFText(MRtfProvider *pProv);
+ HRESULT putRTFText(char *newVal);
HRESULT putTextA(char *newVal);
HRESULT putTextW(wchar_t *newVal);
diff --git a/libs/mTextControl/src/services.cpp b/libs/mTextControl/src/services.cpp
index bd7eee6a50..1575b716dd 100644
--- a/libs/mTextControl/src/services.cpp
+++ b/libs/mTextControl/src/services.cpp
@@ -101,7 +101,7 @@ MTEXTCONTROL_DLL(TextObject *) MTextCreateW(HANDLE userHandle, const char *szPro
/////////////////////////////////////////////////////////////////////////////////////////
// allocate text object (advanced)
-MTEXTCONTROL_DLL(TextObject *) MTextCreateEx(HANDLE userHandle, void *text, uint32_t flags)
+MTEXTCONTROL_DLL(TextObject *) MTextCreateEx(HANDLE userHandle, const void *text, uint32_t flags)
{
TextObject *result = new TextObject;
result->options = TextUserGetOptions(userHandle);
@@ -110,7 +110,7 @@ MTEXTCONTROL_DLL(TextObject *) MTextCreateEx(HANDLE userHandle, void *text, uint
MText_InitFormatting0(result->ftd, result->options);
if (flags & MTEXT_FLG_RTF) {
- result->ftd->putRTFText((MRtfProvider *)text);
+ result->ftd->putRTFText((char *)text);
}
else {
if (flags & MTEXT_FLG_WCHAR)
diff --git a/plugins/ExternalAPI/m_text.h b/plugins/ExternalAPI/m_text.h
index bc3fc25237..d6607e2eb1 100644
--- a/plugins/ExternalAPI/m_text.h
+++ b/plugins/ExternalAPI/m_text.h
@@ -6,12 +6,12 @@
#define MTM_SETUSER WM_USER
#define MTM_UPDATE WM_USER+1
+typedef struct TextObject *HText;
+
#ifdef MTEXTCONTROL_EXPORTS
#define MTEXTCONTROL_EXPORT __declspec(dllexport)
- typedef struct TextObject *HText;
#else
#define MTEXTCONTROL_EXPORT __declspec(dllimport)
- typedef HANDLE HText;
#endif
#define MTEXTCONTROL_DLL(T) MTEXTCONTROL_EXPORT T __stdcall
@@ -46,13 +46,6 @@ enum
MTEXT_FLG_RTF = 0x00000004,
};
-struct MRtfProvider
-{
- virtual CMStringA CreateRtfHeader() = 0;
- virtual CMStringA CreateRtfBody() = 0;
- virtual CMStringA CreateRtfFooter() = 0;
-};
-
// subscribe to MText services
MTEXTCONTROL_DLL(HANDLE) MTextRegister(const char *userTitle, uint32_t options);
@@ -60,7 +53,7 @@ MTEXTCONTROL_DLL(HANDLE) MTextRegister(const char *userTitle, uint32_t options);
MTEXTCONTROL_DLL(HText) MTextCreateW(HANDLE userHandle, const char *szProto, const wchar_t *text);
// allocate text object (advanced)
-MTEXTCONTROL_DLL(HText) MTextCreateEx(HANDLE userHandle, void *text, uint32_t flags);
+MTEXTCONTROL_DLL(HText) MTextCreateEx(HANDLE userHandle, const void *text, uint32_t flags);
// destroys text object
MTEXTCONTROL_DLL(int) MTextDestroy(HText text);
diff --git a/plugins/Popup/src/popup_wnd2.h b/plugins/Popup/src/popup_wnd2.h
index 7f381684ac..b72f2e3920 100644
--- a/plugins/Popup/src/popup_wnd2.h
+++ b/plugins/Popup/src/popup_wnd2.h
@@ -54,13 +54,13 @@ private:
// content
TextType m_textType;
- wchar_t *m_lptzTitle, *m_lptzText;
- HANDLE m_mtTitle, m_mtText;
+ wchar_t *m_lptzTitle, *m_lptzText;
+ HText m_mtTitle, m_mtText;
bool m_bTextEmpty, m_bIcoLib;
HFONT m_hfnTitle, m_hfnText;
HICON m_hIcon;
HBITMAP m_hbmAvatar;
- wchar_t m_time[2 + 1 + 2 + 1];
+ wchar_t m_time[2 + 1 + 2 + 1];
ActionInfo* m_actions;
int m_actionCount;
HANDLE m_hNotification;
@@ -146,15 +146,15 @@ public:
bool isTextEmpty() { return m_bTextEmpty; }
bool isIcolib() { return m_bIcoLib; }
TextType getTextType() { return m_textType; }
- wchar_t *getText() { return m_lptzText; }
- HANDLE getTextM() { return m_mtText; }
- wchar_t *getTitle() { return m_lptzTitle; }
- HANDLE getTitleM() { return m_mtTitle; }
+ wchar_t *getText() { return m_lptzText; }
+ HText getTextM() { return m_mtText; }
+ wchar_t *getTitle() { return m_lptzTitle; }
+ HText getTitleM() { return m_mtTitle; }
int getActionCount() { return m_actionCount; }
ActionInfo *getActions() { return m_actions; }
- wchar_t *getTime() { return m_time; }
+ wchar_t *getTime() { return m_time; }
HICON getIcon() { return m_hIcon; }
MCONTACT getContact() { return m_hContact; }
MCONTACT getContactPassed() { return m_hContactPassed; }