Fix T88909: Win32 getTitle() UTF8 Support
In the Win32 platform our setTitle() can properly assign a Unicode utf-8 window title. Unfortunately our getTitle() will only read regular 8-bit character strings. This means that we can never compare what we set to what we get. This patch updates getTitle() to use Unicode-aware GetWindowTextLengthW and GetWindowTextW. see T88909 for an example of this affecting user experience. Differential Revision: https://developer.blender.org/D11782 Reviewed by Ray Molenkamp
This commit is contained in:
parent
0ff1c38fcc
commit
b39d66adde
|
@ -306,9 +306,13 @@ void GHOST_WindowWin32::setTitle(const char *title)
|
|||
|
||||
std::string GHOST_WindowWin32::getTitle() const
|
||||
{
|
||||
char buf[s_maxTitleLength]; /* CHANGE + never used yet. */
|
||||
::GetWindowText(m_hWnd, buf, s_maxTitleLength);
|
||||
return std::string(buf);
|
||||
std::wstring wtitle(::GetWindowTextLengthW(m_hWnd) + 1, L'\0');
|
||||
::GetWindowTextW(m_hWnd, &wtitle[0], wtitle.capacity());
|
||||
|
||||
std::string title(count_utf_8_from_16(wtitle.c_str()) + 1, '\0');
|
||||
conv_utf_16_to_8(wtitle.c_str(), &title[0], title.capacity());
|
||||
|
||||
return title;
|
||||
}
|
||||
|
||||
void GHOST_WindowWin32::getWindowBounds(GHOST_Rect &bounds) const
|
||||
|
|
Loading…
Reference in New Issue