# HG changeset patch # User Sam Lantinga # Date 1142213638 0 # Node ID 4d005dfbb7f506838c94d25a1b3fbbc9cd11dcda # Parent 7b4b31075f67892af2ad838d1bc8abbe2ddb9461 Fixed bug #139 The text in SDL_WM_SetCaption() is in UTF-8 encoding. diff -r 7b4b31075f67 -r 4d005dfbb7f5 include/SDL_video.h --- a/include/SDL_video.h Mon Mar 13 01:20:05 2006 +0000 +++ b/include/SDL_video.h Mon Mar 13 01:33:58 2006 +0000 @@ -818,7 +818,7 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Sets/Gets the title and icon text of the display window + * Sets/Gets the title and icon text of the display window (UTF-8 encoded) */ extern DECLSPEC void SDLCALL SDL_WM_SetCaption(const char *title, const char *icon); extern DECLSPEC void SDLCALL SDL_WM_GetCaption(char **title, char **icon); diff -r 7b4b31075f67 -r 4d005dfbb7f5 src/video/wincommon/SDL_sysevents.c --- a/src/video/wincommon/SDL_sysevents.c Mon Mar 13 01:20:05 2006 +0000 +++ b/src/video/wincommon/SDL_sysevents.c Mon Mar 13 01:33:58 2006 +0000 @@ -762,13 +762,9 @@ if ( name ) { #ifdef _WIN32_WCE /* WinCE uses the UNICODE version */ - size_t nLen = SDL_strlen(name)+1; - SDL_Appname = SDL_malloc(nLen*2); - MultiByteToWideChar(CP_ACP, 0, name, -1, SDL_Appname, nLen); + SDL_Appname = SDL_iconv_utf8_ucs2(name); #else - size_t nLen = SDL_strlen(name)+1; - SDL_Appname = SDL_malloc(nLen); - SDL_strlcpy(SDL_Appname, name, nLen); + SDL_Appname = SDL_iconv_utf8_latin1(name); #endif /* _WIN32_WCE */ SDL_Appstyle = style; SDL_Instance = hInst ? hInst : SDL_GetModuleHandle(); diff -r 7b4b31075f67 -r 4d005dfbb7f5 src/video/wincommon/SDL_syswm.c --- a/src/video/wincommon/SDL_syswm.c Mon Mar 13 01:20:05 2006 +0000 +++ b/src/video/wincommon/SDL_syswm.c Mon Mar 13 01:33:58 2006 +0000 @@ -230,12 +230,13 @@ { #ifdef _WIN32_WCE /* WinCE uses the UNICODE version */ - int nLen = SDL_strlen(title)+1; - LPWSTR lpszW = alloca(nLen*2); - MultiByteToWideChar(CP_ACP, 0, title, -1, lpszW, nLen); + LPWSTR lpszW = SDL_iconv_utf8_ucs2(title); SetWindowText(SDL_Window, lpszW); + SDL_free(lpszW); #else - SetWindowText(SDL_Window, title); + char *lpsz = SDL_iconv_utf8_latin1(title); + SetWindowText(SDL_Window, lpsz); + SDL_free(lpsz); #endif } diff -r 7b4b31075f67 -r 4d005dfbb7f5 src/video/x11/SDL_x11wm.c --- a/src/video/x11/SDL_x11wm.c Mon Mar 13 01:20:05 2006 +0000 +++ b/src/video/x11/SDL_x11wm.c Mon Mar 13 01:33:58 2006 +0000 @@ -255,8 +255,13 @@ &titleprop); #endif if ( error != Success ) { - pXStringListToTextProperty((char **)&title, 1, - &titleprop); + char *title_latin1 = SDL_iconv_utf8_latin1((char *)title); + if ( !title_latin1 ) { + SDL_OutOfMemory(); + return; + } + pXStringListToTextProperty(&title_latin1, 1, &titleprop); + SDL_free(title_latin1); } pXSetWMName(SDL_Display, WMwindow, &titleprop); pXFree(titleprop.value); @@ -268,7 +273,13 @@ (char **)&icon, 1, XUTF8StringStyle, &iconprop); #endif if ( error != Success ) { - pXStringListToTextProperty((char **)&icon, 1, &iconprop); + char *icon_latin1 = SDL_iconv_utf8_latin1((char *)title); + if ( !icon_latin1 ) { + SDL_OutOfMemory(); + return; + } + pXStringListToTextProperty(&icon_latin1, 1, &iconprop); + SDL_free(icon_latin1); } pXSetWMIconName(SDL_Display, WMwindow, &iconprop); pXFree(iconprop.value);