diff --git a/Contrib/Makensisw/makensisw.cpp b/Contrib/Makensisw/makensisw.cpp index f5de0601..72da2998 100644 --- a/Contrib/Makensisw/makensisw.cpp +++ b/Contrib/Makensisw/makensisw.cpp @@ -621,6 +621,17 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam EnableUICommand(IDM_BROWSESCR, !!g_sdata.input_script); break; } + case WM_MAKENSIS_FREEZEEDITOR: + { + ITextDocument*pTD = (ITextDocument*) g_sdata.pLogTextDoc; + if (pTD) { + if (lParam) + return pTD->Freeze(0); + else + pTD->Unfreeze(0); + } + break; + } case WM_TIMER: { HWND hCtl; diff --git a/Contrib/Makensisw/makensisw.h b/Contrib/Makensisw/makensisw.h index e013eb39..21c2314e 100644 --- a/Contrib/Makensisw/makensisw.h +++ b/Contrib/Makensisw/makensisw.h @@ -96,6 +96,7 @@ static inline bool IsWin95() { return SupportsW95() && (GetVersion() & (0x8000FF #define WM_MAKENSIS_LOADSYMBOLSET (WM_USER+1002) #define WM_MAKENSIS_SAVESYMBOLSET (WM_USER+1003) #define WM_MAKENSIS_UPDATEUISTATE (WM_USER+1004) +#define WM_MAKENSIS_FREEZEEDITOR (WM_USER+1005) #define TID_CONFIGURECLOSEORABORT 1 namespace MakensisAPI { diff --git a/Contrib/Makensisw/utils.cpp b/Contrib/Makensisw/utils.cpp index e6e4ef63..e4f3aac7 100644 --- a/Contrib/Makensisw/utils.cpp +++ b/Contrib/Makensisw/utils.cpp @@ -233,14 +233,16 @@ void ReleaseLogWindow() { #endif } void InitializeLogWindow() { + HWND hRE = GetDlgItem(g_sdata.hwnd, IDC_LOGWIN); #ifdef RE_HAS_TOM IUnknown *pTD = 0, *pREO; - if (SendDlgItemMessage(g_sdata.hwnd, IDC_LOGWIN, EM_GETOLEINTERFACE, 0, (LPARAM)&pREO) && pREO) { + if (SendMessage(hRE, EM_GETOLEINTERFACE, 0, (LPARAM)&pREO) && pREO) { if (FAILED(pREO->QueryInterface(IID_ITextDocument, (void**) &pTD))) pTD = 0; pREO->Release(); } g_sdata.pLogTextDoc = pTD; #endif + SendMessage(hRE, EM_SETTEXTMODE, TM_PLAINTEXT, 0); } void SetLogColor(enum LOGCOLOR lc) @@ -268,13 +270,13 @@ void LogMessage(HWND hwnd,const TCHAR *str) { HWND hLogWin = GetDlgItem(hwnd, IDC_LOGWIN); #ifdef RE_HAS_TOM ITextDocument*pTD = (ITextDocument*) g_sdata.pLogTextDoc; - if (pTD) pTD->Freeze(0); + HRESULT hr = (HRESULT) SendMessage(hwnd, WM_MAKENSIS_FREEZEEDITOR, 0, true); // Force COM calls to UI thread #endif SendMessage(hLogWin, EM_SETSEL, g_sdata.logLength, g_sdata.logLength); SendMessage(hLogWin, EM_REPLACESEL, 0, (LPARAM)str); SendMessage(hLogWin, EM_SCROLLCARET, 0, 0); #ifdef RE_HAS_TOM - if (pTD) pTD->Unfreeze(0), InvalidateRect(hLogWin, NULL, false); + if (SUCCEEDED(hr)) SendMessage(hwnd, WM_MAKENSIS_FREEZEEDITOR, 0, false); #endif g_sdata.logLength += lstrlen(str); }