Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorHarley Acheson <harley.acheson@gmail.com>2021-07-02 04:08:29 +0300
committerJeroen Bakker <jeroen@blender.org>2021-09-06 10:33:45 +0300
commitd6facd44b53108575381ca0637cd0fff73d45391 (patch)
treef8360b3a8a1ca94862506df51614d74481f4f1b7 /intern
parent933c6b7d8a337c7d78246523e6eaefe1daf72790 (diff)
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
Diffstat (limited to 'intern')
-rw-r--r--intern/ghost/intern/GHOST_WindowWin32.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp
index ef155d96f99..88ca458d240 100644
--- a/intern/ghost/intern/GHOST_WindowWin32.cpp
+++ b/intern/ghost/intern/GHOST_WindowWin32.cpp
@@ -376,9 +376,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