From 8c08faba490d821c61033eaec606e8862fe0964b Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Wed, 27 Nov 2013 10:59:23 +0100 Subject: [PATCH] mlang: Improve IMLangLineBreakConsole::BreakLineA for the ASCII codepage. --- dlls/mlang/mlang.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/dlls/mlang/mlang.c b/dlls/mlang/mlang.c index 96ccbf71c09..f4a689cb120 100644 --- a/dlls/mlang/mlang.c +++ b/dlls/mlang/mlang.c @@ -36,6 +36,7 @@ #include "objbase.h" #include "rpcproxy.h" #include "mlang.h" +#include "mimeole.h" #include "wine/unicode.h" #include "wine/debug.h" @@ -44,8 +45,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(mlang); #include "initguid.h" -#define CP_UNICODE 1200 - static HRESULT MultiLanguage_create(IUnknown *pUnkOuter, LPVOID *ppObj); static HRESULT MLangConvertCharset_create(IUnknown *outer, void **obj); static HRESULT EnumRfc1766_create(LANGID LangId, IEnumRfc1766 **ppEnum); @@ -3484,10 +3483,28 @@ static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineA( LONG* pcchLine, LONG* pcchSkip) { + LONG i, line = cchSrc, skip = 0; + FIXME("(%p)->%i %i %s %i %i %p %p\n", iface, locale, uCodePage, debugstr_an(pszSrc,cchSrc), cchSrc, cMaxColumns, pcchLine, pcchSkip); - *pcchLine = cchSrc; - *pcchSkip = 0; + if (uCodePage == CP_USASCII && cchSrc > cMaxColumns) + { + for (line = cMaxColumns, i = cMaxColumns - 1; i >= 0; i--) + { + if (pszSrc[i] == ' ') + { + while (i >= 0 && pszSrc[i] == ' ') + { + i--; + line--; + skip++; + } + break; + } + } + } + *pcchLine = line; + *pcchSkip = skip; return S_OK; }