Module: wine Branch: master Commit: 70131341c7460a73e436c9777d7affcc194fd4a1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=70131341c7460a73e436c9777d...
Author: Aric Stewart aric@codeweavers.com Date: Wed Jan 28 07:38:11 2009 -0600
mlang: Implementation of base functionality of IMultiLanguage2::ValidateCodePage and IMultiLanguage2::ValidateCodePageEx.
Does not handle automatically installing language packs. With help from Dmitry Timoshkov.
---
dlls/mlang/mlang.c | 25 ++++++++++++++++++++++--- include/mlang.idl | 3 +++ 2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/dlls/mlang/mlang.c b/dlls/mlang/mlang.c index 375f102..e002046 100644 --- a/dlls/mlang/mlang.c +++ b/dlls/mlang/mlang.c @@ -2910,8 +2910,7 @@ static HRESULT WINAPI fnIMultiLanguage2_ValidateCodePage( UINT uiCodePage, HWND hwnd) { - FIXME("%u, %p\n", uiCodePage, hwnd); - return E_NOTIMPL; + return IMultiLanguage2_ValidateCodePageEx(iface,uiCodePage,hwnd,0); }
static HRESULT WINAPI fnIMultiLanguage2_GetCodePageDescription( @@ -2989,8 +2988,28 @@ static HRESULT WINAPI fnIMultiLanguage2_ValidateCodePageEx( HWND hwnd, DWORD dwfIODControl) { + int i; ICOM_THIS_MULTI(MLang_impl, vtbl_IMultiLanguage3, iface); - FIXME("%p %u %p %08x: stub!\n", This, uiCodePage, hwnd, dwfIODControl); + + TRACE("%p %u %p %08x\n", This, uiCodePage, hwnd, dwfIODControl); + + /* quick check for kernel32 supported code pages */ + if (IsValidCodePage(uiCodePage)) + return S_OK; + + /* check for mlang supported code pages */ + for (i = 0; i < sizeof(mlang_data)/sizeof(mlang_data[0]); i++) + { + int n; + for (n = 0; n < mlang_data[i].number_of_cp; n++) + { + if (mlang_data[i].mime_cp_info[n].cp == uiCodePage) + return S_OK; + } + } + + if (dwfIODControl != CPIOD_PEEK) + FIXME("Request to install codepage language pack not handled\n");
return S_FALSE; } diff --git a/include/mlang.idl b/include/mlang.idl index 6f00734..bcc0917 100644 --- a/include/mlang.idl +++ b/include/mlang.idl @@ -27,6 +27,9 @@ cpp_quote("#ifndef _WINNT_") typedef WORD LANGID; cpp_quote("#endif")
+cpp_quote("#define CPIOD_PEEK 0x40000000") +cpp_quote("#define CPIOD_FORCE_PROMPT 0x80000000") + [ object, uuid(359f3443-bd4a-11d0-b188-00aa0038c969),