diff options
Diffstat (limited to 'plugins/SpellChecker/src')
| -rw-r--r-- | plugins/SpellChecker/src/RichEdit.cpp | 20 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/RichEdit.h | 10 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/ardialog.cpp | 20 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/ardialog.h | 6 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/autoreplace.cpp | 48 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/autoreplace.h | 22 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/dictionary.cpp | 132 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/dictionary.h | 28 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/options.cpp | 28 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/options.h | 2 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/spellchecker.cpp | 30 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/stdafx.h | 18 | ||||
| -rw-r--r-- | plugins/SpellChecker/src/utils.cpp | 152 | 
13 files changed, 258 insertions, 258 deletions
diff --git a/plugins/SpellChecker/src/RichEdit.cpp b/plugins/SpellChecker/src/RichEdit.cpp index ea5846a42a..1317f767cd 100644 --- a/plugins/SpellChecker/src/RichEdit.cpp +++ b/plugins/SpellChecker/src/RichEdit.cpp @@ -143,7 +143,7 @@ int RichEdit::GetLineCount() const  	return SendMessage(EM_GETLINECOUNT, 0, 0);
  }
 -void RichEdit::GetLine(int line, TCHAR *text, size_t text_len) const
 +void RichEdit::GetLine(int line, wchar_t *text, size_t text_len) const
  {
  	*((WORD*)text) = WORD(text_len - 1);
  	unsigned size = (unsigned)SendMessage(EM_GETLINE, (WPARAM)line, (LPARAM)text);
 @@ -152,7 +152,7 @@ void RichEdit::GetLine(int line, TCHAR *text, size_t text_len) const  	// to make both implementations return same size
  	int lineLen = GetLineLength(line);
  	size = (unsigned)max(0, min((int)text_len - 1, min((int)size, lineLen)));
 -	text[size] = _T('\0');
 +	text[size] = '\0';
  }
  int RichEdit::GetLineLength(int line) const
 @@ -193,7 +193,7 @@ int RichEdit::GetTextLength() const  	return GetWindowTextLength(m_hwnd);
  }
 -TCHAR* RichEdit::GetText(int start, int end) const
 +wchar_t* RichEdit::GetText(int start, int end) const
  {
  	if (end <= start)
  		end = GetTextLength();
 @@ -211,26 +211,26 @@ TCHAR* RichEdit::GetText(int start, int end) const  			return mir_tstrdup(L"");
  		}
 -		TCHAR *res = mir_u2t(text);
 +		wchar_t *res = mir_u2t(text);
  		range->Release();
  		::SysFreeString(text);
  		return res;
  	}
  	int len = (GetTextLength() + 1);
 -	TCHAR *tmp = (TCHAR *)mir_alloc(len * sizeof(TCHAR));
 +	wchar_t *tmp = (wchar_t *)mir_alloc(len * sizeof(wchar_t));
  	GetWindowText(m_hwnd, tmp, len);
  	tmp[len] = 0;
 -	TCHAR *ret = (TCHAR *)mir_alloc((end - start + 1) * sizeof(TCHAR));
 -	memmove(ret, &tmp[start], (end - start) * sizeof(TCHAR));
 +	wchar_t *ret = (wchar_t *)mir_alloc((end - start + 1) * sizeof(wchar_t));
 +	memmove(ret, &tmp[start], (end - start) * sizeof(wchar_t));
  	ret[end - start] = 0;
  	mir_free(tmp);
  	return ret;
  }
 -void RichEdit::ReplaceSel(const TCHAR *new_text)
 +void RichEdit::ReplaceSel(const wchar_t *new_text)
  {
  	if (m_stopped) {
  		CHARRANGE sel = GetSel();
 @@ -249,7 +249,7 @@ void RichEdit::ReplaceSel(const TCHAR *new_text)  	else SendMessage(EM_REPLACESEL, m_undoEnabled, (LPARAM)new_text);
  }
 -int RichEdit::Replace(int start, int end, const TCHAR *new_text)
 +int RichEdit::Replace(int start, int end, const wchar_t *new_text)
  {
  	CHARRANGE sel = GetSel();
  	CHARRANGE replace_sel = { start, end };
 @@ -262,7 +262,7 @@ int RichEdit::Replace(int start, int end, const TCHAR *new_text)  	return dif;
  }
 -int RichEdit::Insert(int pos, const TCHAR *text)
 +int RichEdit::Insert(int pos, const wchar_t *text)
  {
  	CHARRANGE sel = GetSel();
  	CHARRANGE replace_sel = { pos, pos };
 diff --git a/plugins/SpellChecker/src/RichEdit.h b/plugins/SpellChecker/src/RichEdit.h index 4556369c31..17ebe1e438 100644 --- a/plugins/SpellChecker/src/RichEdit.h +++ b/plugins/SpellChecker/src/RichEdit.h @@ -35,7 +35,7 @@ public:  	int GetCharFromPos(const POINT &pt);
  	int GetLineCount() const;
 -	void GetLine(int line, TCHAR *text, size_t text_len) const;
 +	void GetLine(int line, wchar_t *text, size_t text_len) const;
  	int GetLineLength(int line) const;
  	int GetFirstCharOfLine(int line) const;
  	int GetLineFromChar(int charPos) const;
 @@ -44,12 +44,12 @@ public:  	void SetSel(int start, int end);
  	void SetSel(const CHARRANGE &sel);
 -	TCHAR* GetText(int start, int end) const;
 +	wchar_t* GetText(int start, int end) const;
  	int GetTextLength() const;
 -	void ReplaceSel(const TCHAR *new_text);
 -	int Replace(int start, int end, const TCHAR *new_text);
 -	int Insert(int pos, const TCHAR *text);
 +	void ReplaceSel(const wchar_t *new_text);
 +	int Replace(int start, int end, const wchar_t *new_text);
 +	int Insert(int pos, const wchar_t *text);
  	int Delete(int start, int end);
  private:
 diff --git a/plugins/SpellChecker/src/ardialog.cpp b/plugins/SpellChecker/src/ardialog.cpp index 3b1258508f..0b1a14fa56 100644 --- a/plugins/SpellChecker/src/ardialog.cpp +++ b/plugins/SpellChecker/src/ardialog.cpp @@ -25,8 +25,8 @@ static INT_PTR CALLBACK AddReplacementDlgProc(HWND hwndDlg, UINT msg, WPARAM wPa  struct Data
  {
  	Dictionary *dict;
 -	tstring find;
 -	tstring replace;
 +	std::wstring find;
 +	std::wstring replace;
  	BOOL useVariables;
  	BOOL modal;
 @@ -37,7 +37,7 @@ struct Data  };
  BOOL ShowAutoReplaceDialog(HWND parent, BOOL modal,
 -	Dictionary *dict, const TCHAR *find, const TCHAR *replace, BOOL useVariables,
 +	Dictionary *dict, const wchar_t *find, const wchar_t *replace, BOOL useVariables,
  	BOOL findReadOnly, AutoReplaceDialogCallback callback, void *param)
  {
  	Data *data = new Data();
 @@ -79,11 +79,11 @@ static LRESULT CALLBACK OnlyCharsEditProc(HWND hwnd, UINT msg, WPARAM wParam, LP  		if (GetKeyState(VK_CONTROL) & 0x8000)	// CTRL key
  			break;
  		{
 -			TCHAR c = (TCHAR)wParam;
 +			wchar_t c = (wchar_t)wParam;
  			if (!data->dict->autoReplace->isWordChar(c))
  				return 1;
 -			TCHAR tmp[2] = { c, 0 };
 +			wchar_t tmp[2] = { c, 0 };
  			CharLower(tmp);
  			wParam = tmp[0];
 @@ -96,10 +96,10 @@ static LRESULT CALLBACK OnlyCharsEditProc(HWND hwnd, UINT msg, WPARAM wParam, LP  	switch (msg) {
  	case EM_PASTESPECIAL:
  	case WM_PASTE:
 -		TCHAR text[256];
 +		wchar_t text[256];
  		GetWindowText(hwnd, text, _countof(text));
 -		scoped_free<TCHAR> dest = data->dict->autoReplace->filterText(text);
 +		scoped_free<wchar_t> dest = data->dict->autoReplace->filterText(text);
  		SetWindowText(hwnd, dest);
  		break;
  	}
 @@ -171,7 +171,7 @@ static INT_PTR CALLBACK AddReplacementDlgProc(HWND hwndDlg, UINT msg, WPARAM wPa  			SendDlgItemMessage(hwndDlg, IDC_NEW, EM_LIMITTEXT, 256, 0);
  			if (!data->find.empty()) {
 -				scoped_free<TCHAR> tmp = data->dict->autoReplace->filterText(data->find.c_str());
 +				scoped_free<wchar_t> tmp = data->dict->autoReplace->filterText(data->find.c_str());
  				SetDlgItemText(hwndDlg, IDC_OLD, tmp);
  			}
  			if (!data->replace.empty())
 @@ -213,7 +213,7 @@ static INT_PTR CALLBACK AddReplacementDlgProc(HWND hwndDlg, UINT msg, WPARAM wPa  		{
  			Data *data = (Data *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
 -			TCHAR find[256];
 +			wchar_t find[256];
  			if (data->findReadOnly)
  				mir_tstrncpy(find, data->find.c_str(), _countof(find));
  			else {
 @@ -221,7 +221,7 @@ static INT_PTR CALLBACK AddReplacementDlgProc(HWND hwndDlg, UINT msg, WPARAM wPa  				lstrtrim(find);
  			}
 -			TCHAR replace[256];
 +			wchar_t replace[256];
  			GetDlgItemText(hwndDlg, IDC_NEW, replace, _countof(replace));
  			lstrtrim(replace);
 diff --git a/plugins/SpellChecker/src/ardialog.h b/plugins/SpellChecker/src/ardialog.h index 83f97c6026..6ece91cc4f 100644 --- a/plugins/SpellChecker/src/ardialog.h +++ b/plugins/SpellChecker/src/ardialog.h @@ -22,11 +22,11 @@ Boston, MA 02111-1307, USA.  typedef void (*AutoReplaceDialogCallback)(BOOL canceled, Dictionary *dict, 
 -										  const TCHAR *find, const TCHAR *replace, BOOL useVariables, 
 -										  const TCHAR *original_find, void *param);
 +										  const wchar_t *find, const wchar_t *replace, BOOL useVariables, 
 +										  const wchar_t *original_find, void *param);
  BOOL ShowAutoReplaceDialog(HWND parent, BOOL modal, 
 -						   Dictionary *dict, const TCHAR *find, const TCHAR *replace, BOOL useVariables,
 +						   Dictionary *dict, const wchar_t *find, const wchar_t *replace, BOOL useVariables,
  						   BOOL findReadOnly, AutoReplaceDialogCallback callback, void *param);
 diff --git a/plugins/SpellChecker/src/autoreplace.cpp b/plugins/SpellChecker/src/autoreplace.cpp index 899146ffdf..a3ad88e928 100644 --- a/plugins/SpellChecker/src/autoreplace.cpp +++ b/plugins/SpellChecker/src/autoreplace.cpp @@ -24,13 +24,13 @@ AutoReplacement::AutoReplacement()  {
  }
 -AutoReplacement::AutoReplacement(const TCHAR *replace, BOOL useVariables)
 +AutoReplacement::AutoReplacement(const wchar_t *replace, BOOL useVariables)
  	: replace(replace), useVariables(useVariables)
  {
  }
 -AutoReplaceMap::AutoReplaceMap(TCHAR *aFilename, Dictionary *dict)
 +AutoReplaceMap::AutoReplaceMap(wchar_t *aFilename, Dictionary *dict)
  {
  	m_dict = dict;
  	mir_tstrncpy(m_filename, aFilename, _countof(m_filename));
 @@ -39,7 +39,7 @@ AutoReplaceMap::AutoReplaceMap(TCHAR *aFilename, Dictionary *dict)  void AutoReplaceMap::loadAutoReplaceMap()
  {
 -	FILE *file = _tfopen(m_filename, L"rb");
 +	FILE *file = _wfopen(m_filename, L"rb");
  	if (file == NULL)
  		return;
 @@ -88,17 +88,17 @@ void AutoReplaceMap::loadAutoReplaceMap()  void AutoReplaceMap::writeAutoReplaceMap()
  {
  	// Create path
 -	TCHAR *p = _tcsrchr(m_filename, _T('\\'));
 +	wchar_t *p = wcsrchr(m_filename, '\\');
  	if (p != NULL) {
  		*p = 0;
  		CreateDirectoryTreeT(m_filename);
 -		*p = _T('\\');
 +		*p = '\\';
  	}
  	// Write it
 -	FILE *file = _tfopen(m_filename, L"wb");
 +	FILE *file = _wfopen(m_filename, L"wb");
  	if (file != NULL) {
 -		map<tstring, AutoReplacement>::iterator it = m_replacements.begin();
 +		map<std::wstring, AutoReplacement>::iterator it = m_replacements.begin();
  		for (; it != m_replacements.end(); it++) {
  			AutoReplacement &ar = it->second;
 @@ -115,32 +115,32 @@ void AutoReplaceMap::writeAutoReplaceMap()  }
 -BOOL AutoReplaceMap::isWordChar(TCHAR c)
 +BOOL AutoReplaceMap::isWordChar(wchar_t c)
  {
  	if (IsNumber(c))
  		return TRUE;
 -	if (_tcschr(L"-_.!@#$%&*()[]{}<>:?/\\=+", c) != NULL)
 +	if (wcschr(L"-_.!@#$%&*()[]{}<>:?/\\=+", c) != NULL)
  		return TRUE;
  	return m_dict->isWordChar(c);
  }
 -TCHAR* AutoReplaceMap::autoReplace(const TCHAR * word)
 +wchar_t* AutoReplaceMap::autoReplace(const wchar_t * word)
  {
 -	scoped_free<TCHAR> from = _tcslwr(_tcsdup(word));
 +	scoped_free<wchar_t> from = wcslwr(wcsdup(word));
  	if (m_replacements.find(from.get()) == m_replacements.end())
  		return NULL;
  	AutoReplacement &ar = m_replacements[from.get()];
 -	TCHAR *to;
 +	wchar_t *to;
  	if (ar.useVariables)
 -		to = variables_parsedup((TCHAR *)ar.replace.c_str(), (TCHAR *)word, NULL);
 +		to = variables_parsedup((wchar_t *)ar.replace.c_str(), (wchar_t *)word, NULL);
  	else
 -		to = _tcsdup(ar.replace.c_str());
 +		to = wcsdup(ar.replace.c_str());
  	// Wich case to use?
  	size_t len = mir_tstrlen(word);
 @@ -156,17 +156,17 @@ TCHAR* AutoReplaceMap::autoReplace(const TCHAR * word)  		return CharUpper(to);
  	// First upper
 -	TCHAR tmp[2];
 +	wchar_t tmp[2];
  	tmp[0] = to[0];
 -	tmp[1] = _T('\0');
 +	tmp[1] = '\0';
  	CharUpper(tmp);
  	to[0] = tmp[0];
  	return to;
  }
 -TCHAR* AutoReplaceMap::filterText(const TCHAR *find)
 +wchar_t* AutoReplaceMap::filterText(const wchar_t *find)
  {
 -	TCHAR *ret = _tcsdup(find);
 +	wchar_t *ret = wcsdup(find);
  	int len = mir_tstrlen(ret);
  	int pos = 0;
  	for (int i = 0; i < len; i++)
 @@ -176,27 +176,27 @@ TCHAR* AutoReplaceMap::filterText(const TCHAR *find)  	return CharLower(ret);
  }
 -void AutoReplaceMap::add(const TCHAR * aFrom, const TCHAR * to, BOOL useVariables)
 +void AutoReplaceMap::add(const wchar_t * aFrom, const wchar_t * to, BOOL useVariables)
  {
 -	scoped_free<TCHAR> from = filterText(aFrom);
 +	scoped_free<wchar_t> from = filterText(aFrom);
  	m_replacements[from.get()] = AutoReplacement(to, useVariables);
  	writeAutoReplaceMap();
  }
 -void AutoReplaceMap::copyMap(map<tstring, AutoReplacement> *replacements)
 +void AutoReplaceMap::copyMap(map<std::wstring, AutoReplacement> *replacements)
  {
  	*replacements = m_replacements;
  }
 -void AutoReplaceMap::setMap(const map<tstring, AutoReplacement> &replacements)
 +void AutoReplaceMap::setMap(const map<std::wstring, AutoReplacement> &replacements)
  {
  	m_replacements.clear();
 -	map<tstring, AutoReplacement>::const_iterator it = replacements.begin();
 +	map<std::wstring, AutoReplacement>::const_iterator it = replacements.begin();
  	for (; it != replacements.end(); it++) {
 -		scoped_free<TCHAR> from = filterText(it->first.c_str());
 +		scoped_free<wchar_t> from = filterText(it->first.c_str());
  		m_replacements[from.get()] = it->second;
  	}
 diff --git a/plugins/SpellChecker/src/autoreplace.h b/plugins/SpellChecker/src/autoreplace.h index 8a81fdfcbf..316f015e0d 100644 --- a/plugins/SpellChecker/src/autoreplace.h +++ b/plugins/SpellChecker/src/autoreplace.h @@ -24,11 +24,11 @@ Boston, MA 02111-1307, USA.  struct AutoReplacement
  {
 -	tstring replace;
 +	std::wstring replace;
  	BOOL useVariables;
  	AutoReplacement();
 -	AutoReplacement(const TCHAR *replace, BOOL useVariables);
 +	AutoReplacement(const wchar_t *replace, BOOL useVariables);
  };
 @@ -38,31 +38,31 @@ class Dictionary;  class AutoReplaceMap 
  {
  private:
 -	TCHAR m_filename[1024];
 +	wchar_t m_filename[1024];
  	Dictionary *m_dict;
 -	map<tstring, AutoReplacement> m_replacements;
 +	map<std::wstring, AutoReplacement> m_replacements;
  	void loadAutoReplaceMap();
  	void writeAutoReplaceMap();
  public:
 -	AutoReplaceMap(TCHAR *filename, Dictionary *dict);
 +	AutoReplaceMap(wchar_t *filename, Dictionary *dict);
 -	TCHAR* filterText(const TCHAR *find);
 -	BOOL isWordChar(TCHAR c);
 +	wchar_t* filterText(const wchar_t *find);
 +	BOOL isWordChar(wchar_t c);
  	/// Return an auto replacement to a word or NULL if none exists.
  	/// You have to free the item.
 -	TCHAR* autoReplace(const TCHAR *word);
 +	wchar_t* autoReplace(const wchar_t *word);
  	/// Add a word to the list of auto-replaced words
 -	void add(const TCHAR *from, const TCHAR *to, BOOL useVariables = FALSE);
 +	void add(const wchar_t *from, const wchar_t *to, BOOL useVariables = FALSE);
  	/// Make a copy of the auto replace map
 -	void copyMap(map<tstring, AutoReplacement> *replacements);
 +	void copyMap(map<std::wstring, AutoReplacement> *replacements);
  	/// Make a copy of the auto replace map
 -	void setMap(const map<tstring, AutoReplacement> &replacements);
 +	void setMap(const map<std::wstring, AutoReplacement> &replacements);
  };
 diff --git a/plugins/SpellChecker/src/dictionary.cpp b/plugins/SpellChecker/src/dictionary.cpp index 58218fc2b1..efad448000 100644 --- a/plugins/SpellChecker/src/dictionary.cpp +++ b/plugins/SpellChecker/src/dictionary.cpp @@ -25,16 +25,16 @@ Boston, MA 02111-1307, USA.  // Additional languages that i could not find in Windows  struct { -	TCHAR *language; -	TCHAR *localized_name; +	wchar_t *language; +	wchar_t *localized_name;  } aditionalLanguages[] = { -	{ L"tl_PH", LPGENT("Tagalog (Philippines)") }, -	{ L"de_frami_neu", LPGENT("German (Germany)") } +	{ L"tl_PH", LPGENW("Tagalog (Philippines)") }, +	{ L"de_frami_neu", LPGENW("German (Germany)") }  };  struct { -	TCHAR *name; -	TCHAR *key; +	wchar_t *name; +	wchar_t *key;  } otherHunspellApps[] = {  	{ L"Thunderbird", L"thunderbird.exe" },  	{ L"Firefox", L"firefox.exe" } @@ -355,19 +355,19 @@ void LoadThread(LPVOID hd);  class HunspellDictionary : public Dictionary  {  protected: -	TCHAR fileWithoutExtension[1024]; -	TCHAR userPath[1024]; +	wchar_t fileWithoutExtension[1024]; +	wchar_t userPath[1024];  	volatile int loaded;  	Hunspell *hunspell; -	TCHAR *wordChars; +	wchar_t *wordChars;  	UINT codePage;  	void loadCustomDict()  	{ -		TCHAR filename[1024]; +		wchar_t filename[1024];  		mir_sntprintf(filename, L"%s\\%s.cdic", userPath, language); -		FILE *file = _tfopen(filename, L"rb"); +		FILE *file = _wfopen(filename, L"rb");  		if (file != NULL) {  			char tmp[1024];  			int c, pos = 0; @@ -388,14 +388,14 @@ protected:  		}  	} -	void appendToCustomDict(const TCHAR *word) +	void appendToCustomDict(const wchar_t *word)  	{  		CreateDirectoryTreeT(userPath); -		TCHAR filename[1024]; +		wchar_t filename[1024];  		mir_sntprintf(filename, L"%s\\%s.cdic", userPath, language); -		FILE *file = _tfopen(filename, L"ab"); +		FILE *file = _wfopen(filename, L"ab");  		if (file != NULL) {  			char tmp[1024];  			toHunspell(tmp, word, _countof(tmp)); @@ -404,7 +404,7 @@ protected:  		}  	} -	virtual void addWordInternal(const TCHAR * word) +	virtual void addWordInternal(const wchar_t * word)  	{  		if (loaded != LANGUAGE_LOADED)  			return; @@ -415,12 +415,12 @@ protected:  		hunspell->add(hunspell_word);  	} -	void toHunspell(char *hunspellWord, const TCHAR *word, size_t hunspellWordLen) +	void toHunspell(char *hunspellWord, const wchar_t *word, size_t hunspellWordLen)  	{  		WideCharToMultiByte(codePage, 0, word, -1, hunspellWord, (int)hunspellWordLen, NULL, NULL);  	} -	TCHAR* fromHunspell(const char *hunspellWord) +	wchar_t* fromHunspell(const char *hunspellWord)  	{  		int len = MultiByteToWideChar(codePage, 0, hunspellWord, -1, NULL, 0);  		WCHAR *ret = (WCHAR *)malloc((len + 1) * sizeof(WCHAR)); @@ -428,31 +428,31 @@ protected:  		return ret;  	} -	TCHAR* fromHunspellAndFree(char *hunspellWord) +	wchar_t* fromHunspellAndFree(char *hunspellWord)  	{  		if (hunspellWord == NULL)  			return NULL; -		TCHAR *ret = fromHunspell(hunspellWord); +		wchar_t *ret = fromHunspell(hunspellWord);  		free(hunspellWord);  		return ret;  	}  public: -	HunspellDictionary(TCHAR *aLanguage, TCHAR *aFileWithoutExtension, TCHAR *anUserPath, TCHAR *aSource) +	HunspellDictionary(wchar_t *aLanguage, wchar_t *aFileWithoutExtension, wchar_t *anUserPath, wchar_t *aSource)  	{  		mir_tstrncpy(language, aLanguage, _countof(language));  		mir_tstrncpy(fileWithoutExtension, aFileWithoutExtension, _countof(fileWithoutExtension));  		mir_tstrncpy(userPath, anUserPath, _countof(userPath));  		if (aSource == NULL) -			source[0] = _T('\0'); +			source[0] = '\0';  		else  			mir_tstrncpy(source, aSource, _countof(source));  		loaded = LANGUAGE_NOT_LOADED; -		localized_name[0] = _T('\0'); -		english_name[0] = _T('\0'); -		full_name[0] = _T('\0'); +		localized_name[0] = '\0'; +		english_name[0] = '\0'; +		full_name[0] = '\0';  		hunspell = NULL;  		wordChars = NULL;  		codePage = CP_ACP; @@ -467,14 +467,14 @@ public:  			free(wordChars);  	} -	TCHAR * merge(TCHAR * s1, TCHAR *s2) +	wchar_t * merge(wchar_t * s1, wchar_t *s2)  	{  		int len1 = (s1 == NULL ? 0 : mir_tstrlen(s1));  		int len2 = (s2 == NULL ? 0 : mir_tstrlen(s2)); -		TCHAR *ret; +		wchar_t *ret;  		if (len1 > 0 && len2 > 0) { -			ret = (TCHAR *)malloc(sizeof(TCHAR) * (len1 + len2 + 1)); +			ret = (wchar_t *)malloc(sizeof(wchar_t) * (len1 + len2 + 1));  			mir_tstrncpy(ret, s1, len1 + 1);  			mir_tstrncpy(&ret[len1], s2, len2 + 1); @@ -490,7 +490,7 @@ public:  			FREE(s1);  		}  		else { -			ret = (TCHAR *)malloc(sizeof(TCHAR)); +			ret = (wchar_t *)malloc(sizeof(wchar_t));  			ret[0] = 0;  			FREE(s1); @@ -500,13 +500,13 @@ public:  		// Remove duplicated chars  		int last = mir_tstrlen(ret) - 1;  		for (int i = 0; i <= last; i++) { -			TCHAR c = ret[i]; +			wchar_t c = ret[i];  			for (int j = last; j > i; j--) {  				if (c != ret[j])  					continue;  				if (j != last)  					ret[j] = ret[last]; -				ret[last] = _T('\0'); +				ret[last] = '\0';  				last--;  			}  		} @@ -530,7 +530,7 @@ public:  		// Get codepage  		const char *dic_enc = hunspell->get_dic_encoding(); -		TCHAR *hwordchars; +		wchar_t *hwordchars;  		if (mir_strcmp(dic_enc, "UTF-8") == 0) {  			codePage = CP_UTF8; @@ -550,8 +550,8 @@ public:  			hwordchars = fromHunspell(hunspell->get_wordchars());  		} -		TCHAR *casechars = fromHunspellAndFree(get_casechars(dic_enc)); -		TCHAR *try_string = fromHunspellAndFree(hunspell->get_try_string()); +		wchar_t *casechars = fromHunspellAndFree(get_casechars(dic_enc)); +		wchar_t *try_string = fromHunspellAndFree(hunspell->get_try_string());  		wordChars = merge(merge(casechars, hwordchars), try_string); @@ -569,7 +569,7 @@ public:  	}  	// Return TRUE if the word is correct -	virtual BOOL spell(const TCHAR *word) +	virtual BOOL spell(const wchar_t *word)  	{  		load();  		if (loaded != LANGUAGE_LOADED) @@ -584,7 +584,7 @@ public:  	}  	// Return a list of suggestions to a word -	virtual Suggestions suggest(const TCHAR * word) +	virtual Suggestions suggest(const wchar_t * word)  	{  		Suggestions ret = { 0 }; @@ -600,7 +600,7 @@ public:  		if (ret.count > 0 && words != NULL) {  			// Oki, lets make our array -			ret.words = (TCHAR **)malloc(ret.count * sizeof(TCHAR *)); +			ret.words = (wchar_t **)malloc(ret.count * sizeof(wchar_t *));  			for (unsigned i = 0; i < ret.count; i++) {  				ret.words[i] = fromHunspell(words[i]);  				free(words[i]); @@ -613,7 +613,7 @@ public:  	}  	// Return a list of auto suggestions to a word -	virtual Suggestions autoSuggest(const TCHAR * word) +	virtual Suggestions autoSuggest(const wchar_t * word)  	{  		Suggestions ret = { 0 }; @@ -632,7 +632,7 @@ public:  		// Oki, lets make our array  		ret.count = count; -		ret.words = (TCHAR **)malloc(ret.count * sizeof(TCHAR *)); +		ret.words = (wchar_t **)malloc(ret.count * sizeof(wchar_t *));  		for (int i = 0; i < count; i++) {  			ret.words[i] = fromHunspell(words[i]);  			free(words[i]); @@ -644,7 +644,7 @@ public:  	// Return a list of auto suggestions to a word  	// You have to free the list AND each item -	virtual TCHAR * autoSuggestOne(const TCHAR * word) +	virtual wchar_t * autoSuggestOne(const wchar_t * word)  	{  		load();  		if (loaded != LANGUAGE_LOADED) @@ -659,7 +659,7 @@ public:  		if (count <= 0)  			return NULL; -		TCHAR *ret = fromHunspell(words[0]); +		wchar_t *ret = fromHunspell(words[0]);  		// Oki, lets make our array  		for (int i = 0; i < count; i++) @@ -670,7 +670,7 @@ public:  	}  	// Return TRUE if the char is a word char -	virtual BOOL isWordChar(TCHAR c) +	virtual BOOL isWordChar(wchar_t c)  	{  		if (c == 0)  			return FALSE; @@ -679,7 +679,7 @@ public:  		if (loaded != LANGUAGE_LOADED)  			return TRUE; -		return _tcschr(wordChars, (_TINT)c) != NULL; +		return wcschr(wordChars, (_TINT)c) != NULL;  	}  	// Assert that all needed data is loaded @@ -698,14 +698,14 @@ public:  	// Add a word to the user custom dict -	virtual void addWord(const TCHAR * word) +	virtual void addWord(const wchar_t * word)  	{  		addWordInternal(word);  		appendToCustomDict(word);  	}  	// Add a word to the list of ignored words -	virtual void ignoreWord(const TCHAR * word) +	virtual void ignoreWord(const wchar_t * word)  	{  		addWordInternal(word);  	} @@ -725,15 +725,15 @@ LIST<Dictionary> *tmp_dicts;  // To get the names of the languages  BOOL CALLBACK EnumLocalesProc(LPTSTR lpLocaleString)  { -	TCHAR *stopped = NULL; -	USHORT langID = (USHORT)_tcstol(lpLocaleString, &stopped, 16); +	wchar_t *stopped = NULL; +	USHORT langID = (USHORT)wcstol(lpLocaleString, &stopped, 16); -	TCHAR ini[32]; -	TCHAR end[32]; +	wchar_t ini[32]; +	wchar_t end[32];  	GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SISO639LANGNAME, ini, _countof(ini));  	GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SISO3166CTRYNAME, end, _countof(end)); -	TCHAR name[64]; +	wchar_t name[64];  	mir_sntprintf(name, L"%s_%s", ini, end);  	for (int i = 0; i < tmp_dicts->getCount(); i++) { @@ -747,10 +747,10 @@ BOOL CALLBACK EnumLocalesProc(LPTSTR lpLocaleString)  			if (dict->localized_name[0] == 0)  				GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SNATIVEDISPLAYNAME, dict->localized_name, _countof(dict->localized_name));  			if (dict->localized_name[0] == 0 && dict->english_name[0] != 0) { -				TCHAR country[1024]; +				wchar_t country[1024];  				GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SENGCOUNTRY, country, _countof(country)); -				TCHAR localName[1024]; +				wchar_t localName[1024];  				if (country[0] != 0)  					mir_sntprintf(localName, L"%s (%s)", dict->english_name, country);  				else @@ -778,7 +778,7 @@ void GetDictsInfo(LIST<Dictionary> &dicts)  	for (int i = 0; i < dicts.getCount(); i++) {  		Dictionary *dict = dicts[i]; -		if (dict->full_name[0] == _T('\0')) { +		if (dict->full_name[0] == '\0') {  			DBVARIANT dbv;  			char lang[128]; @@ -788,7 +788,7 @@ void GetDictsInfo(LIST<Dictionary> &dicts)  				db_free(&dbv);  			} -			if (dict->localized_name[0] == _T('\0')) { +			if (dict->localized_name[0] == '\0') {  				for (size_t j = 0; j < _countof(aditionalLanguages); j++) {  					if (!mir_tstrcmp(aditionalLanguages[j].language, dict->language)) {  						mir_tstrncpy(dict->localized_name, TranslateTS(aditionalLanguages[j].localized_name), _countof(dict->localized_name)); @@ -797,7 +797,7 @@ void GetDictsInfo(LIST<Dictionary> &dicts)  				}  			} -			if (dict->localized_name[0] != _T('\0')) { +			if (dict->localized_name[0] != '\0') {  				mir_sntprintf(dict->full_name, L"%s [%s]", dict->localized_name, dict->language);  			}  			else { @@ -808,10 +808,10 @@ void GetDictsInfo(LIST<Dictionary> &dicts)  } -void GetHunspellDictionariesFromFolder(LIST<Dictionary> &dicts, TCHAR *path, TCHAR *user_path, TCHAR *source) +void GetHunspellDictionariesFromFolder(LIST<Dictionary> &dicts, wchar_t *path, wchar_t *user_path, wchar_t *source)  {  	// Load the language files and create an array with then -	TCHAR file[1024] = { 0 }; +	wchar_t file[1024] = { 0 };  	mir_sntprintf(file, L"%s\\*.dic", path);  	BOOL found = FALSE; @@ -833,14 +833,14 @@ void GetHunspellDictionariesFromFolder(LIST<Dictionary> &dicts, TCHAR *path, TCH  			if (attrib == 0xFFFFFFFF || (attrib & FILE_ATTRIBUTE_DIRECTORY))  				continue; -			ffd.cFileName[mir_tstrlen(ffd.cFileName) - 4] = _T('\0'); +			ffd.cFileName[mir_tstrlen(ffd.cFileName) - 4] = '\0'; -			TCHAR *lang = ffd.cFileName; +			wchar_t *lang = ffd.cFileName;  			// Replace - for _  			for (size_t i = 0; i < mir_tstrlen(lang); i++) -				if (lang[i] == _T('-')) -					lang[i] = _T('_'); +				if (lang[i] == '-') +					lang[i] = '_';  			// Check if dict is new  			bool exists = false; @@ -850,7 +850,7 @@ void GetHunspellDictionariesFromFolder(LIST<Dictionary> &dicts, TCHAR *path, TCH  			if (!exists) {  				found = TRUE; -				file[mir_tstrlen(file) - 4] = _T('\0'); +				file[mir_tstrlen(file) - 4] = '\0';  				dicts.insert(new HunspellDictionary(lang, file, user_path, source));  			}  		} while (FindNextFile(hFFD, &ffd)); @@ -861,7 +861,7 @@ void GetHunspellDictionariesFromFolder(LIST<Dictionary> &dicts, TCHAR *path, TCH  // Return a list of avaible languages -void GetAvaibleDictionaries(LIST<Dictionary> &dicts, TCHAR *path, TCHAR *user_path) +void GetAvaibleDictionaries(LIST<Dictionary> &dicts, wchar_t *path, wchar_t *user_path)  {  	// Get miranda folder dicts  	GetHunspellDictionariesFromFolder(dicts, path, user_path, NULL); @@ -869,7 +869,7 @@ void GetAvaibleDictionaries(LIST<Dictionary> &dicts, TCHAR *path, TCHAR *user_pa  	if (opts.use_other_apps_dicts) {  		// Get other apps dicts  		for (int i = 0; i < _countof(otherHunspellApps); i++) { -			TCHAR key[1024]; +			wchar_t key[1024];  			mir_sntprintf(key, APPPATH, otherHunspellApps[i].key);  			HKEY hKey = 0; @@ -893,8 +893,8 @@ void GetAvaibleDictionaries(LIST<Dictionary> &dicts, TCHAR *path, TCHAR *user_pa  						if (ERROR_SUCCESS != RegEnumValue(hKey, local, key, &cchValue, NULL, NULL, NULL, NULL))  							break;  						key[cchValue] = 0; -						TCHAR *pos; -						if (pos = _tcsrchr(key, _T('\\'))) { +						wchar_t *pos; +						if (pos = wcsrchr(key, '\\')) {  							if (!mir_tstrcmpi(&pos[1], otherHunspellApps[i].key)) {  								pos[0] = 0;  								lResult = ERROR_SUCCESS; @@ -907,7 +907,7 @@ void GetAvaibleDictionaries(LIST<Dictionary> &dicts, TCHAR *path, TCHAR *user_pa  			}  			if (ERROR_SUCCESS == lResult) { -				TCHAR folder[1024]; +				wchar_t folder[1024];  				mir_sntprintf(folder, L"%s\\Dictionaries", key);  				GetHunspellDictionariesFromFolder(languages, folder, user_path, otherHunspellApps[i].name); diff --git a/plugins/SpellChecker/src/dictionary.h b/plugins/SpellChecker/src/dictionary.h index 09902435f6..da70a6a4c2 100644 --- a/plugins/SpellChecker/src/dictionary.h +++ b/plugins/SpellChecker/src/dictionary.h @@ -23,7 +23,7 @@ Boston, MA 02111-1307, USA.  struct Suggestions {
 -	TCHAR ** words;
 +	wchar_t ** words;
  	size_t count;
  };
 @@ -32,37 +32,37 @@ struct Suggestions {  // All dictionaries use a lazy interface
  class Dictionary {
  public:
 -	TCHAR language[128];
 -	TCHAR localized_name[128];
 -	TCHAR english_name[128];
 -	TCHAR full_name[256];
 -	TCHAR source[128];
 +	wchar_t language[128];
 +	wchar_t localized_name[128];
 +	wchar_t english_name[128];
 +	wchar_t full_name[256];
 +	wchar_t source[128];
  	AutoReplaceMap *autoReplace;
  	HANDLE hIcolib;
  	virtual ~Dictionary();
  	// Return TRUE if the word is correct
 -	virtual BOOL spell(const TCHAR *) = 0;
 +	virtual BOOL spell(const wchar_t *) = 0;
  	// Return a list of suggestions to a word
 -	virtual Suggestions suggest(const TCHAR * word) = 0;
 +	virtual Suggestions suggest(const wchar_t * word) = 0;
  	// Return a list of auto suggestions to a word
 -	virtual Suggestions autoSuggest(const TCHAR * word) = 0;
 +	virtual Suggestions autoSuggest(const wchar_t * word) = 0;
  	// Return a auto suggestions to a word
  	// You have to free the item
 -	virtual TCHAR * autoSuggestOne(const TCHAR * word) = 0;
 +	virtual wchar_t * autoSuggestOne(const wchar_t * word) = 0;
  	// Return TRUE if the char is a word char
 -	virtual BOOL isWordChar(TCHAR c) = 0;
 +	virtual BOOL isWordChar(wchar_t c) = 0;
  	// Add a word to the user custom dict
 -	virtual void addWord(const TCHAR * word) = 0;
 +	virtual void addWord(const wchar_t * word) = 0;
  	// Add a word to the list of ignored words
 -	virtual void ignoreWord(const TCHAR * word) = 0;
 +	virtual void ignoreWord(const wchar_t * word) = 0;
  	// Assert that all needed data is loaded
  	virtual void load() = 0;
 @@ -74,7 +74,7 @@ public:  // Return a list of avaible languages
 -void GetAvaibleDictionaries(LIST<Dictionary> &dicts, TCHAR *path, TCHAR *user_path);
 +void GetAvaibleDictionaries(LIST<Dictionary> &dicts, wchar_t *path, wchar_t *user_path);
  // Free the list returned by GetAvaibleDictionaries
  void FreeDictionaries(LIST<Dictionary> &dicts);
 diff --git a/plugins/SpellChecker/src/options.cpp b/plugins/SpellChecker/src/options.cpp index ed625ab6f2..c0bc78ab5a 100644 --- a/plugins/SpellChecker/src/options.cpp +++ b/plugins/SpellChecker/src/options.cpp @@ -88,7 +88,7 @@ void LoadOptions()  	LoadOpts(autoReplaceControls, _countof(autoReplaceControls), MODULE_NAME);
  	if (languages.getCount() <= 0) {
 -		opts.default_language[0] = _T('\0');
 +		opts.default_language[0] = '\0';
  		return;
  	}
 @@ -213,7 +213,7 @@ static INT_PTR CALLBACK OptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LP  			if (sel >= languages.getCount())
  				sel = 0;
  			db_set_ts(NULL, MODULE_NAME, "DefaultLanguage",
 -				(TCHAR *)languages[sel]->language);
 +				(wchar_t *)languages[sel]->language);
  			mir_tstrcpy(opts.default_language, languages[sel]->language);
  		}
  	}
 @@ -247,21 +247,21 @@ static INT_PTR CALLBACK OptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LP  struct AutoreplaceData
  {
  	Dictionary *dict;
 -	map<tstring, AutoReplacement> autoReplaceMap;
 +	map<std::wstring, AutoReplacement> autoReplaceMap;
  	BOOL initialized;
  	BOOL changed;
  	AutoreplaceData(Dictionary *dict) : dict(dict), initialized(FALSE), changed(FALSE) {}
 -	void RemoveWord(const TCHAR *aWord)
 +	void RemoveWord(const wchar_t *aWord)
  	{
 -		map<tstring, AutoReplacement>::iterator it = autoReplaceMap.find(aWord);
 +		map<std::wstring, AutoReplacement>::iterator it = autoReplaceMap.find(aWord);
  		if (it != autoReplaceMap.end())
  			autoReplaceMap.erase(it);
  		changed = TRUE;
  	}
 -	void AddWord(const TCHAR *find, const TCHAR *replace, BOOL useVars)
 +	void AddWord(const wchar_t *find, const wchar_t *replace, BOOL useVars)
  	{
  		autoReplaceMap[find] = AutoReplacement(replace, useVars);
  		changed = TRUE;
 @@ -302,26 +302,26 @@ static void LoadReplacements(HWND hwndDlg)  		data->initialized = TRUE;
  	}
 -	map<tstring, AutoReplacement>::iterator it = data->autoReplaceMap.begin();
 +	map<std::wstring, AutoReplacement>::iterator it = data->autoReplaceMap.begin();
  	for (int i = 0; it != data->autoReplaceMap.end(); it++, i++) {
  		LVITEM item = { 0 };
  		item.mask = LVIF_TEXT | LVIF_PARAM;
  		item.iItem = i;
  		item.iSubItem = 0;
 -		item.pszText = (TCHAR *)it->first.c_str();
 +		item.pszText = (wchar_t *)it->first.c_str();
  		item.lParam = i;
  		ListView_InsertItem(hList, &item);
 -		ListView_SetItemText(hList, i, 1, (TCHAR *)it->second.replace.c_str());
 +		ListView_SetItemText(hList, i, 1, (wchar_t *)it->second.replace.c_str());
  	}
  	EnableDisableCtrls(hwndDlg);
  }
  static void SaveNewReplacements(BOOL canceled, Dictionary*,
 -	const TCHAR *find, const TCHAR *replace, BOOL useVariables,
 -	const TCHAR *original_find, void *param)
 +	const wchar_t *find, const wchar_t *replace, BOOL useVariables,
 +	const wchar_t *original_find, void *param)
  {
  	if (canceled)
  		return;
 @@ -342,8 +342,8 @@ static void ShowAddReplacement(HWND hwndDlg, int item = -1)  	AutoreplaceData *data = (AutoreplaceData *)SendDlgItemMessage(hwndDlg, IDC_LANGUAGE, CB_GETITEMDATA, sel, 0);
 -	TCHAR find[256];
 -	const TCHAR *replace = NULL;
 +	wchar_t find[256];
 +	const wchar_t *replace = NULL;
  	BOOL useVariables = FALSE;
  	if (item < 0)
 @@ -430,7 +430,7 @@ static INT_PTR CALLBACK AutoreplaceDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam  			sel = SendMessage(hList, LVM_GETNEXTITEM, -1, LVNI_SELECTED);
  			while (sel >= 0) {
 -				TCHAR tmp[256];
 +				wchar_t tmp[256];
  				ListView_GetItemText(hList, sel, 0, tmp, _countof(tmp));
  				data->RemoveWord(tmp);
 diff --git a/plugins/SpellChecker/src/options.h b/plugins/SpellChecker/src/options.h index 65e33c0f4e..8d699d4adf 100644 --- a/plugins/SpellChecker/src/options.h +++ b/plugins/SpellChecker/src/options.h @@ -31,7 +31,7 @@ Boston, MA 02111-1307, USA.  struct Options
  {
 -	TCHAR default_language[32];
 +	wchar_t default_language[32];
  	BOOL auto_replace_dict;
  	BOOL auto_replace_user;
  	BOOL ignore_uppercase;
 diff --git a/plugins/SpellChecker/src/spellchecker.cpp b/plugins/SpellChecker/src/spellchecker.cpp index 7d12a021f5..e6217118c4 100644 --- a/plugins/SpellChecker/src/spellchecker.cpp +++ b/plugins/SpellChecker/src/spellchecker.cpp @@ -40,13 +40,13 @@ HINSTANCE hInst;  int hLangpack = 0;  HANDLE hDictionariesFolder = NULL; -TCHAR *dictionariesFolder; +wchar_t *dictionariesFolder;  HANDLE hCustomDictionariesFolder = NULL; -TCHAR *customDictionariesFolder; +wchar_t *customDictionariesFolder;  HANDLE hFlagsDllFolder = NULL; -TCHAR *flagsDllFolder; +wchar_t *flagsDllFolder;  HBITMAP hCheckedBmp;  BITMAP bmpChecked; @@ -79,7 +79,7 @@ static int IconsChanged(WPARAM, LPARAM)  	for (int i = 0; i < languages.getCount(); i++) {  		sid.dwId = i; -		TCHAR tmp[128]; +		wchar_t tmp[128];  		mir_sntprintf(tmp, L"%s - %s", TranslateT("Spell Checker"), languages[i]->full_name);  		sid.tszTooltip = tmp; @@ -108,19 +108,19 @@ static int ModulesLoaded(WPARAM, LPARAM)  	// Folders plugin support  	if (hDictionariesFolder = FoldersRegisterCustomPathT(LPGEN("Spell Checker"), LPGEN("Dictionaries"), DICTIONARIES_FOLDER)) { -		dictionariesFolder = (TCHAR *)mir_alloc(sizeof(TCHAR) * MAX_PATH); +		dictionariesFolder = (wchar_t *)mir_alloc(sizeof(wchar_t) * MAX_PATH);  		FoldersGetCustomPathT(hDictionariesFolder, dictionariesFolder, MAX_PATH, L".");  	}  	else dictionariesFolder = Utils_ReplaceVarsT(DICTIONARIES_FOLDER);  	if (hCustomDictionariesFolder = FoldersRegisterCustomPathT(LPGEN("Spell Checker"), LPGEN("Custom Dictionaries"), CUSTOM_DICTIONARIES_FOLDER)) { -		customDictionariesFolder = (TCHAR *)mir_alloc(sizeof(TCHAR) * MAX_PATH); +		customDictionariesFolder = (wchar_t *)mir_alloc(sizeof(wchar_t) * MAX_PATH);  		FoldersGetCustomPathT(hCustomDictionariesFolder, customDictionariesFolder, MAX_PATH, L".");  	}  	else customDictionariesFolder = Utils_ReplaceVarsT(CUSTOM_DICTIONARIES_FOLDER);  	if (hFlagsDllFolder = FoldersRegisterCustomPathT(LPGEN("Spell Checker"), LPGEN("Flags DLL"), FLAGS_DLL_FOLDER)) { -		flagsDllFolder = (TCHAR *)mir_alloc(sizeof(TCHAR) * MAX_PATH); +		flagsDllFolder = (wchar_t *)mir_alloc(sizeof(wchar_t) * MAX_PATH);  		FoldersGetCustomPathT(hFlagsDllFolder, flagsDllFolder, MAX_PATH, L".");  	}  	else flagsDllFolder = Utils_ReplaceVarsT(FLAGS_DLL_FOLDER); @@ -133,21 +133,21 @@ static int ModulesLoaded(WPARAM, LPARAM)  	if (opts.use_flags) {  		// Load flags dll -		TCHAR flag_file[MAX_PATH]; +		wchar_t flag_file[MAX_PATH];  		mir_sntprintf(flag_file, L"%s\\flags_icons.dll", flagsDllFolder);  		HMODULE hFlagsDll = LoadLibraryEx(flag_file, NULL, LOAD_LIBRARY_AS_DATAFILE); -		TCHAR path[MAX_PATH]; +		wchar_t path[MAX_PATH];  		GetModuleFileName(hInst, path, MAX_PATH);  		SKINICONDESC sid = { 0 };  		sid.flags = SIDF_ALL_TCHAR | SIDF_SORTED; -		sid.section.t = LPGENT("Spell Checker") L"/" LPGENT("Flags"); +		sid.section.w = LPGENW("Spell Checker") L"/" LPGENW("Flags");  		// Get language flags  		for (int i = 0; i < languages.getCount(); i++) {  			Dictionary *p = languages[i]; -			sid.description.t = p->full_name; +			sid.description.w = p->full_name;  			char lang[32];  			mir_snprintf(lang, "spell_lang_%d", i); @@ -159,13 +159,13 @@ static int ModulesLoaded(WPARAM, LPARAM)  			if (hFlag != NULL) {  				sid.hDefaultIcon = hFlag; -				sid.defaultFile.t = NULL; +				sid.defaultFile.w = NULL;  				sid.iDefaultIndex = 0;  			}  			else {  				hFlagIcoLib = IcoLib_GetIcon("spellchecker_unknown");  				sid.hDefaultIcon = hFlagIcoLib; -				sid.defaultFile.t = NULL; +				sid.defaultFile.w = NULL;  				sid.iDefaultIndex = 0;  			} @@ -183,7 +183,7 @@ static int ModulesLoaded(WPARAM, LPARAM)  	for (int j = 0; j < languages.getCount(); j++) {  		Dictionary *dict = languages[j]; -		TCHAR filename[MAX_PATH]; +		wchar_t filename[MAX_PATH];  		mir_sntprintf(filename, L"%s\\%s.ar", customDictionariesFolder, dict->language);  		dict->autoReplace = new AutoReplaceMap(filename, dict); @@ -204,7 +204,7 @@ static int ModulesLoaded(WPARAM, LPARAM)  	for (int i = 0; i < languages.getCount(); i++) {  		sid.dwId = i; -		TCHAR tmp[128]; +		wchar_t tmp[128];  		mir_sntprintf(tmp, L"%s - %s", TranslateT("Spell Checker"), languages[i]->full_name);  		sid.tszTooltip = tmp;  		sid.hIcon = (opts.use_flags) ? IcoLib_GetIconByHandle(languages[i]->hIcolib) : IcoLib_GetIcon("spellchecker_enabled"); diff --git a/plugins/SpellChecker/src/stdafx.h b/plugins/SpellChecker/src/stdafx.h index 66e5e39f3f..ea4ea9b6bc 100644 --- a/plugins/SpellChecker/src/stdafx.h +++ b/plugins/SpellChecker/src/stdafx.h @@ -96,7 +96,7 @@ extern HBITMAP hCheckedBmp;  struct WrongWordPopupMenuData 
  {
  	Suggestions suggestions;
 -	TCHAR *word;
 +	wchar_t *word;
  	CHARRANGE pos;
  	HMENU hMeSubMenu;
  	HMENU hCorrectSubMenu;
 @@ -110,7 +110,7 @@ struct Dialog  	MCONTACT hContact;
  	char name[64];
  	Dictionary *lang;
 -	TCHAR lang_name[32];
 +	wchar_t lang_name[32];
  	BOOL enabled;
  	BOOL srmm;
 @@ -129,11 +129,11 @@ struct Dialog  };
  static BOOL CenterParent(HWND hwnd);
 -TCHAR *lstrtrim(TCHAR *str);
 -BOOL lstreq(TCHAR *a, TCHAR *b, size_t len = -1);
 -inline BOOL IsNumber(TCHAR c)
 +wchar_t *lstrtrim(wchar_t *str);
 +BOOL lstreq(wchar_t *a, wchar_t *b, size_t len = -1);
 +inline BOOL IsNumber(wchar_t c)
  {
 -	return c >= _T('0') && c <= _T('9');
 +	return c >= '0' && c <= '9';
  }
  int MsgWindowEvent(WPARAM wParam, LPARAM lParam);
 @@ -151,9 +151,9 @@ INT_PTR ShowPopupMenuService(WPARAM wParam, LPARAM lParam);  LRESULT CALLBACK MenuWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  void ModifyIcon(Dialog *dlg);
 -BOOL GetWordCharRange(Dialog *dlg, CHARRANGE &sel, TCHAR *text, size_t text_len, int &first_char);
 -TCHAR *GetWordUnderPoint(Dialog *dlg, POINT pt, CHARRANGE &sel);
 +BOOL GetWordCharRange(Dialog *dlg, CHARRANGE &sel, wchar_t *text, size_t text_len, int &first_char);
 +wchar_t *GetWordUnderPoint(Dialog *dlg, POINT pt, CHARRANGE &sel);
 -int GetClosestLanguage(TCHAR *lang_name);
 +int GetClosestLanguage(wchar_t *lang_name);
  #endif // __COMMONS_H__
 diff --git a/plugins/SpellChecker/src/utils.cpp b/plugins/SpellChecker/src/utils.cpp index 7242f0c98c..7df9b00d14 100644 --- a/plugins/SpellChecker/src/utils.cpp +++ b/plugins/SpellChecker/src/utils.cpp @@ -19,7 +19,7 @@ Boston, MA 02111-1307, USA.  #include "stdafx.h"
 -typedef void(*FoundWrongWordCallback)(TCHAR *word, CHARRANGE pos, void *param);
 +typedef void(*FoundWrongWordCallback)(wchar_t *word, CHARRANGE pos, void *param);
  typedef map<HWND, Dialog *> DialogMapType;
  DialogMapType dialogs;
 @@ -95,20 +95,20 @@ void SetNoUnderline(Dialog *dlg)  	dlg->re->Start();
  }
 -inline BOOL IsURL(TCHAR c)
 +inline BOOL IsURL(wchar_t c)
  {
 -	return (c >= _T('a') && c <= _T('z'))
 -		|| (c >= _T('A') && c <= _T('Z'))
 +	return (c >= 'a' && c <= 'z')
 +		|| (c >= 'A' && c <= 'Z')
  		|| IsNumber(c)
 -		|| c == _T('.') || c == _T('/')
 -		|| c == _T('\\') || c == _T('?')
 -		|| c == _T('=') || c == _T('&')
 -		|| c == _T('%') || c == _T('-')
 -		|| c == _T('_') || c == _T(':')
 -		|| c == _T('@') || c == _T('#');
 +		|| c == '.' || c == '/'
 +		|| c == '\\' || c == '?'
 +		|| c == '=' || c == '&'
 +		|| c == '%' || c == '-'
 +		|| c == '_' || c == ':'
 +		|| c == '@' || c == '#';
  }
 -int FindURLEnd(Dialog *dlg, TCHAR *text, int start_pos, int *checked_until = NULL)
 +int FindURLEnd(Dialog *dlg, wchar_t *text, int start_pos, int *checked_until = NULL)
  {
  	int num_slashes = 0;
  	int num_ats = 0;
 @@ -117,12 +117,12 @@ int FindURLEnd(Dialog *dlg, TCHAR *text, int start_pos, int *checked_until = NUL  	int i = start_pos;
  	for (; IsURL(text[i]) || dlg->lang->isWordChar(text[i]); i++) {
 -		TCHAR c = text[i];
 -		if (c == _T('\\') || c == _T('/'))
 +		wchar_t c = text[i];
 +		if (c == '\\' || c == '/')
  			num_slashes++;
 -		else if (c == _T('.'))
 +		else if (c == '.')
  			num_dots++;
 -		else if (c == _T('@'))
 +		else if (c == '@')
  			num_ats++;
  	}
 @@ -142,7 +142,7 @@ int FindURLEnd(Dialog *dlg, TCHAR *text, int start_pos, int *checked_until = NUL  }
 -int ReplaceWord(Dialog *dlg, CHARRANGE &sel, TCHAR *new_word)
 +int ReplaceWord(Dialog *dlg, CHARRANGE &sel, wchar_t *new_word)
  {
  	dlg->re->Stop();
  	dlg->re->ResumeUndo();
 @@ -161,10 +161,10 @@ public:  	virtual ~TextParser() {}
  	/// @return true when finished an word
 -	virtual bool feed(int pos, TCHAR c) = 0;
 +	virtual bool feed(int pos, wchar_t c) = 0;
  	virtual int  getFirstCharPos() = 0;
  	virtual void reset() = 0;
 -	virtual void deal(const TCHAR *text, bool *mark, bool *replace, TCHAR **replacement) = 0;
 +	virtual void deal(const wchar_t *text, bool *mark, bool *replace, wchar_t **replacement) = 0;
  };
  class SpellParser : public TextParser
 @@ -185,14 +185,14 @@ public:  		found_real_char = FALSE;
  	}
 -	virtual bool feed(int pos, TCHAR c)
 +	virtual bool feed(int pos, wchar_t c)
  	{
  		// Is inside a word?
  		if (dict->isWordChar(c) || IsNumber(c)) {
  			if (last_pos == -1)
  				last_pos = pos;
 -			if (c != _T('-') && !IsNumber(c))
 +			if (c != '-' && !IsNumber(c))
  				found_real_char = TRUE;
  			return false;
 @@ -209,7 +209,7 @@ public:  		return (!found_real_char) ? -1 : last_pos;
  	}
 -	virtual void deal(const TCHAR *text, bool *mark, bool *replace, TCHAR **replacement)
 +	virtual void deal(const wchar_t *text, bool *mark, bool *replace, wchar_t **replacement)
  	{
  		// Is it correct?
  		if (dict->spell(text))
 @@ -244,7 +244,7 @@ public:  		last_pos = -1;
  	}
 -	virtual bool feed(int pos, TCHAR c)
 +	virtual bool feed(int pos, wchar_t c)
  	{
  		// Is inside a word?
  		if (ar->isWordChar(c)) {
 @@ -261,7 +261,7 @@ public:  		return last_pos;
  	}
 -	virtual void deal(const TCHAR *text, bool*, bool *replace, TCHAR **replacement)
 +	virtual void deal(const wchar_t *text, bool*, bool *replace, wchar_t **replacement)
  	{
  		*replacement = ar->autoReplace(text);
  		if (*replacement != NULL)
 @@ -274,7 +274,7 @@ int CheckTextLine(Dialog *dlg, int line, TextParser *parser,  						const CHARRANGE &ignored, FoundWrongWordCallback callback, void *param)
  {
  	int errors = 0;
 -	TCHAR text[1024];
 +	wchar_t text[1024];
  	dlg->re->GetLine(line, text, _countof(text));
  	int len = mir_tstrlen(text);
  	int first_char = dlg->re->GetFirstCharOfLine(line);
 @@ -312,7 +312,7 @@ int CheckTextLine(Dialog *dlg, int line, TextParser *parser,  			}
  		}
  		else {
 -			TCHAR c = text[pos];
 +			wchar_t c = text[pos];
  			BOOL feed = parser->feed(pos, c);
  			if (!feed) {
 @@ -356,7 +356,7 @@ int CheckTextLine(Dialog *dlg, int line, TextParser *parser,  		bool mark = false;
  		bool replace = false;
 -		TCHAR *replacement = NULL;
 +		wchar_t *replacement = NULL;
  		parser->deal(&text[last_pos], &mark, &replace, &replacement);
  		if (replace) {
 @@ -431,12 +431,12 @@ int CheckText(Dialog *dlg, BOOL check_all, FoundWrongWordCallback callback = NUL  	return errors;
  }
 -void ToLocaleID(TCHAR *szKLName, size_t size)
 +void ToLocaleID(wchar_t *szKLName, size_t size)
  {
 -	TCHAR *stopped = NULL;
 -	USHORT langID = (USHORT)_tcstol(szKLName, &stopped, 16);
 +	wchar_t *stopped = NULL;
 +	USHORT langID = (USHORT)wcstol(szKLName, &stopped, 16);
 -	TCHAR ini[32], end[32];
 +	wchar_t ini[32], end[32];
  	GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SISO639LANGNAME, ini, _countof(ini));
  	GetLocaleInfo(MAKELCID(langID, 0), LOCALE_SISO3166CTRYNAME, end, _countof(end));
 @@ -445,7 +445,7 @@ void ToLocaleID(TCHAR *szKLName, size_t size)  void LoadDictFromKbdl(Dialog *dlg)
  {
 -	TCHAR szKLName[KL_NAMELENGTH + 1];
 +	wchar_t szKLName[KL_NAMELENGTH + 1];
  	// Use default input language
  	HKL hkl = GetKeyboardLayout(0);
 @@ -500,7 +500,7 @@ LRESULT CALLBACK OwnerProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)  		if (opts.ask_when_sending_with_error) {
  			int errors = TimerCheck(dlg, TRUE);
  			if (errors > 0) {
 -				TCHAR text[500];
 +				wchar_t text[500];
  				mir_sntprintf(text, TranslateT("There are %d spelling errors. Are you sure you want to send this message?"), errors);
  				if (MessageBox(hwnd, text, TranslateT("Spell Checker"), MB_ICONQUESTION | MB_YESNO) == IDNO)
  					return TRUE;
 @@ -584,7 +584,7 @@ LRESULT CALLBACK EditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)  			break;
  		{
 -			TCHAR c = (TCHAR)wParam;
 +			wchar_t c = (wchar_t)wParam;
  			BOOL deleting = (c == VK_BACK || c == VK_DELETE);
  			// Need to do that to avoid changing the word while typing
 @@ -616,7 +616,7 @@ LRESULT CALLBACK EditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)  					CHARRANGE sel = dlg->re->GetSel();
 -					TCHAR text[1024];
 +					wchar_t text[1024];
  					int first_char;
  					GetWordCharRange(dlg, sel, text, _countof(text), first_char);
 @@ -674,7 +674,7 @@ LRESULT CALLBACK EditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)  	return ret;
  }
 -int GetClosestLanguage(TCHAR *lang_name)
 +int GetClosestLanguage(wchar_t *lang_name)
  {
  	int i;
 @@ -684,11 +684,11 @@ int GetClosestLanguage(TCHAR *lang_name)  			return i;
  	// Try searching by the prefix only
 -	TCHAR lang[128];
 +	wchar_t lang[128];
  	mir_tstrncpy(lang, lang_name, _countof(lang));
  	{
 -		TCHAR *p = _tcschr(lang, _T('_'));
 -		if (p != NULL) *p = _T('\0');
 +		wchar_t *p = wcschr(lang, '_');
 +		if (p != NULL) *p = '\0';
  	}
  	// First check if there is a language that is only the prefix
 @@ -699,7 +699,7 @@ int GetClosestLanguage(TCHAR *lang_name)  	// Now try any suffix
  	size_t len = mir_tstrlen(lang);
  	for (i = 0; i < languages.getCount(); i++) {
 -		TCHAR *p = _tcschr(languages[i]->language, _T('_'));
 +		wchar_t *p = wcschr(languages[i]->language, '_');
  		if (p == NULL)
  			continue;
 @@ -707,7 +707,7 @@ int GetClosestLanguage(TCHAR *lang_name)  		if (prefix_len != len)
  			continue;
 -		if (_tcsnicmp(languages[i]->language, lang_name, len) == 0)
 +		if (wcsnicmp(languages[i]->language, lang_name, len) == 0)
  			return i;
  	}
 @@ -734,7 +734,7 @@ void GetUserProtoLanguageSetting(Dialog *dlg, MCONTACT hContact, char *group, ch  	}
  	if (dbv.type == DBVT_TCHAR && dbv.ptszVal != NULL) {
 -		TCHAR *lang = dbv.ptszVal;
 +		wchar_t *lang = dbv.ptszVal;
  		for (int i = 0; i < languages.getCount(); i++) {
  			Dictionary *dict = languages[i];
 @@ -756,18 +756,18 @@ void GetUserLanguageSetting(Dialog *dlg, char *setting)  		return;
  	GetUserProtoLanguageSetting(dlg, dlg->hContact, proto, setting);
 -	if (dlg->lang_name[0] != _T('\0'))
 +	if (dlg->lang_name[0] != '\0')
  		return;
  	GetUserProtoLanguageSetting(dlg, dlg->hContact, "UserInfo", setting, FALSE);
 -	if (dlg->lang_name[0] != _T('\0'))
 +	if (dlg->lang_name[0] != '\0')
  		return;
  	// If not found and is inside meta, try to get from the meta
  	MCONTACT hMetaContact = db_mc_getMeta(dlg->hContact);
  	if (hMetaContact != NULL) {
  		GetUserProtoLanguageSetting(dlg, hMetaContact, META_PROTO, setting);
 -		if (dlg->lang_name[0] != _T('\0'))
 +		if (dlg->lang_name[0] != '\0')
  			return;
  		GetUserProtoLanguageSetting(dlg, hMetaContact, "UserInfo", setting, FALSE);
 @@ -778,7 +778,7 @@ void GetContactLanguage(Dialog *dlg)  {
  	DBVARIANT dbv = { 0 };
 -	dlg->lang_name[0] = _T('\0');
 +	dlg->lang_name[0] = '\0';
  	if (dlg->hContact == NULL) {
  		if (!db_get_ts(NULL, MODULE_NAME, dlg->name, &dbv)) {
 @@ -792,13 +792,13 @@ void GetContactLanguage(Dialog *dlg)  			db_free(&dbv);
  		}
 -		if (dlg->lang_name[0] == _T('\0') && !db_get_ts(dlg->hContact, "eSpeak", "TalkLanguage", &dbv)) {
 +		if (dlg->lang_name[0] == '\0' && !db_get_ts(dlg->hContact, "eSpeak", "TalkLanguage", &dbv)) {
  			mir_tstrncpy(dlg->lang_name, dbv.ptszVal, _countof(dlg->lang_name));
  			db_free(&dbv);
  		}
  		// Try from metacontact
 -		if (dlg->lang_name[0] == _T('\0')) {
 +		if (dlg->lang_name[0] == '\0') {
  			MCONTACT hMetaContact = db_mc_getMeta(dlg->hContact);
  			if (hMetaContact != NULL) {
  				if (!db_get_ts(hMetaContact, MODULE_NAME, "TalkLanguage", &dbv)) {
 @@ -806,7 +806,7 @@ void GetContactLanguage(Dialog *dlg)  					db_free(&dbv);
  				}
 -				if (dlg->lang_name[0] == _T('\0') && !db_get_ts(hMetaContact, "eSpeak", "TalkLanguage", &dbv)) {
 +				if (dlg->lang_name[0] == '\0' && !db_get_ts(hMetaContact, "eSpeak", "TalkLanguage", &dbv)) {
  					mir_tstrncpy(dlg->lang_name, dbv.ptszVal, _countof(dlg->lang_name));
  					db_free(&dbv);
  				}
 @@ -814,17 +814,17 @@ void GetContactLanguage(Dialog *dlg)  		}
  		// Try to get from Language info
 -		if (dlg->lang_name[0] == _T('\0'))
 +		if (dlg->lang_name[0] == '\0')
  			GetUserLanguageSetting(dlg, "Language");
 -		if (dlg->lang_name[0] == _T('\0'))
 +		if (dlg->lang_name[0] == '\0')
  			GetUserLanguageSetting(dlg, "Language1");
 -		if (dlg->lang_name[0] == _T('\0'))
 +		if (dlg->lang_name[0] == '\0')
  			GetUserLanguageSetting(dlg, "Language2");
 -		if (dlg->lang_name[0] == _T('\0'))
 +		if (dlg->lang_name[0] == '\0')
  			GetUserLanguageSetting(dlg, "Language3");
  		// Use default lang
 -		if (dlg->lang_name[0] == _T('\0'))
 +		if (dlg->lang_name[0] == '\0')
  			mir_tstrncpy(dlg->lang_name, opts.default_language, _countof(dlg->lang_name));
  	}
 @@ -973,7 +973,7 @@ int RemoveContactTextBox(HWND hwnd)  }
  // TODO Make this better
 -BOOL GetWordCharRange(Dialog *dlg, CHARRANGE &sel, TCHAR *text, size_t text_len, int &first_char)
 +BOOL GetWordCharRange(Dialog *dlg, CHARRANGE &sel, wchar_t *text, size_t text_len, int &first_char)
  {
  	// Get line
  	int line = dlg->re->GetLineFromChar(sel.cpMin);
 @@ -989,7 +989,7 @@ BOOL GetWordCharRange(Dialog *dlg, CHARRANGE &sel, TCHAR *text, size_t text_len,  		sel.cpMin--;
  	sel.cpMin++;
 -	while (text[sel.cpMax - first_char] != _T('\0') && (dlg->lang->isWordChar(text[sel.cpMax - first_char])
 +	while (text[sel.cpMax - first_char] != '\0' && (dlg->lang->isWordChar(text[sel.cpMax - first_char])
  		|| IsNumber(text[sel.cpMax - first_char])))
  		sel.cpMax++;
 @@ -1000,12 +1000,12 @@ BOOL GetWordCharRange(Dialog *dlg, CHARRANGE &sel, TCHAR *text, size_t text_len,  	// See if it has only '-'s
  	BOOL has_valid_char = FALSE;
  	for (int i = sel.cpMin; i < sel.cpMax && !has_valid_char; i++)
 -		has_valid_char = (text[i - first_char] != _T('-'));
 +		has_valid_char = (text[i - first_char] != '-');
  	return has_valid_char;
  }
 -TCHAR *GetWordUnderPoint(Dialog *dlg, POINT pt, CHARRANGE &sel)
 +wchar_t *GetWordUnderPoint(Dialog *dlg, POINT pt, CHARRANGE &sel)
  {
  	// Get text
  	if (dlg->re->GetTextLength() <= 0)
 @@ -1015,19 +1015,19 @@ TCHAR *GetWordUnderPoint(Dialog *dlg, POINT pt, CHARRANGE &sel)  	sel.cpMin = sel.cpMax = dlg->re->GetCharFromPos(pt);
  	// Get text
 -	TCHAR text[1024];
 +	wchar_t text[1024];
  	int first_char;
  	if (!GetWordCharRange(dlg, sel, text, _countof(text), first_char))
  		return NULL;
  	// copy the word
 -	text[sel.cpMax - first_char] = _T('\0');
 -	return _tcsdup(&text[sel.cpMin - first_char]);
 +	text[sel.cpMax - first_char] = '\0';
 +	return wcsdup(&text[sel.cpMin - first_char]);
  }
 -void AppendSubmenu(HMENU hMenu, HMENU hSubMenu, TCHAR *name)
 +void AppendSubmenu(HMENU hMenu, HMENU hSubMenu, wchar_t *name)
  {
  	MENUITEMINFO mii = { 0 };
  	mii.cbSize = sizeof(mii);
 @@ -1039,7 +1039,7 @@ void AppendSubmenu(HMENU hMenu, HMENU hSubMenu, TCHAR *name)  	InsertMenuItem(hMenu, 0, TRUE, &mii);
  }
 -void AppendMenuItem(HMENU hMenu, int id, TCHAR *name, HICON hIcon, BOOL checked)
 +void AppendMenuItem(HMENU hMenu, int id, wchar_t *name, HICON hIcon, BOOL checked)
  {
  	ICONINFO iconInfo;
  	GetIconInfo(hIcon, &iconInfo);
 @@ -1061,7 +1061,7 @@ void AppendMenuItem(HMENU hMenu, int id, TCHAR *name, HICON hIcon, BOOL checked)  #define WORD_MENU_ID_BASE 100
  #define AUTOREPLACE_MENU_ID_BASE 50
 -void AddMenuForWord(Dialog *dlg, TCHAR *word, CHARRANGE &pos, HMENU hMenu, BOOL in_submenu, UINT base)
 +void AddMenuForWord(Dialog *dlg, wchar_t *word, CHARRANGE &pos, HMENU hMenu, BOOL in_submenu, UINT base)
  {
  	if (dlg->wrong_words == NULL)
  		dlg->wrong_words = new vector<WrongWordPopupMenuData>(1);
 @@ -1116,7 +1116,7 @@ void AddMenuForWord(Dialog *dlg, TCHAR *word, CHARRANGE &pos, HMENU hMenu, BOOL  	if (!in_submenu && opts.show_wrong_word) {
  		InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0);
 -		TCHAR text[128];
 +		wchar_t text[128];
  		mir_sntprintf(text, TranslateT("Wrong word: %s"), word);
  		InsertMenu(hMenu, 0, MF_BYPOSITION, 0, text);
  	}
 @@ -1128,13 +1128,13 @@ struct FoundWrongWordParam  	int count;
  };
 -void FoundWrongWord(TCHAR *word, CHARRANGE pos, void *param)
 +void FoundWrongWord(wchar_t *word, CHARRANGE pos, void *param)
  {
  	FoundWrongWordParam *p = (FoundWrongWordParam*)param;
  	p->count++;
 -	AddMenuForWord(p->dlg, _tcsdup(word), pos, p->dlg->hWrongWordsSubMenu, TRUE, WORD_MENU_ID_BASE * p->count);
 +	AddMenuForWord(p->dlg, wcsdup(word), pos, p->dlg->hWrongWordsSubMenu, TRUE, WORD_MENU_ID_BASE * p->count);
  }
  void AddItemsToMenu(Dialog *dlg, HMENU hMenu, POINT pt, HWND hwndOwner)
 @@ -1179,7 +1179,7 @@ void AddItemsToMenu(Dialog *dlg, HMENU hMenu, POINT pt, HWND hwndOwner)  		}
  		else {
  			CHARRANGE sel;
 -			TCHAR *word = GetWordUnderPoint(dlg, pt, sel);
 +			wchar_t *word = GetWordUnderPoint(dlg, pt, sel);
  			if (word != NULL && !dlg->lang->spell(word)) {
  				InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0);
  				AddMenuForWord(dlg, word, sel, hMenu, FALSE, WORD_MENU_ID_BASE);
 @@ -1190,8 +1190,8 @@ void AddItemsToMenu(Dialog *dlg, HMENU hMenu, POINT pt, HWND hwndOwner)  static void AddWordToDictCallback(BOOL canceled, Dictionary *dict,
 -	const TCHAR *find, const TCHAR *replace, BOOL useVariables,
 -	const TCHAR *, void *param)
 +	const wchar_t *find, const wchar_t *replace, BOOL useVariables,
 +	const wchar_t *, void *param)
  {
  	if (canceled)
  		return;
 @@ -1549,7 +1549,7 @@ LRESULT CALLBACK MenuWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)  	return mir_callNextSubclass(hwnd, MenuWndProc, msg, wParam, lParam);
  }
 -TCHAR* lstrtrim(TCHAR *str)
 +wchar_t* lstrtrim(wchar_t *str)
  {
  	int len = mir_tstrlen(str);
 @@ -1557,22 +1557,22 @@ TCHAR* lstrtrim(TCHAR *str)  	for (i = len - 1; i >= 0 && (str[i] == ' ' || str[i] == '\t'); --i);
  	if (i < len - 1) {
  		++i;
 -		str[i] = _T('\0');
 +		str[i] = '\0';
  		len = i;
  	}
  	for (i = 0; i < len && (str[i] == ' ' || str[i] == '\t'); ++i);
  	if (i > 0)
 -		memmove(str, &str[i], (len - i + 1) * sizeof(TCHAR));
 +		memmove(str, &str[i], (len - i + 1) * sizeof(wchar_t));
  	return str;
  }
 -BOOL lstreq(TCHAR *a, TCHAR *b, size_t len)
 +BOOL lstreq(wchar_t *a, wchar_t *b, size_t len)
  {
 -	a = CharLower(_tcsdup(a));
 -	b = CharLower(_tcsdup(b));
 -	BOOL ret = len ? !_tcsncmp(a, b, len) : !mir_tstrcmp(a, b);
 +	a = CharLower(wcsdup(a));
 +	b = CharLower(wcsdup(b));
 +	BOOL ret = len ? !wcsncmp(a, b, len) : !mir_tstrcmp(a, b);
  	free(a);
  	free(b);
  	return ret;
  | 
