Browse Source

--- Merging r20684 into '.':
U packages/gmp/src/gmp.pas
--- Merging r20691 into '.':
U rtl/objpas/classes/stringl.inc
U rtl/objpas/classes/classesh.inc
--- Merging r20729 into '.':
U rtl/wince/wininc/messages.inc
--- Merging r20760 into '.':
U packages/winunits-base/src/imm.pas
--- Merging r20772 into '.':
U rtl/unix/video.pp
--- Merging r20779 into '.':
U rtl/objpas/classes/collect.inc
G rtl/objpas/classes/classesh.inc

# revisions: 20684,20691,20729,20760,20772,20779
------------------------------------------------------------------------
r20684 | marco | 2012-04-01 15:17:24 +0200 (Sun, 01 Apr 2012) | 2 lines
Changed paths:
M /trunk/packages/gmp/src/gmp.pas

* Original author of GMP package now does wants to be named.

------------------------------------------------------------------------
------------------------------------------------------------------------
r20691 | michael | 2012-04-02 13:22:02 +0200 (Mon, 02 Apr 2012) | 1 line
Changed paths:
M /trunk/rtl/objpas/classes/classesh.inc
M /trunk/rtl/objpas/classes/stringl.inc

* Overloaded AddStrings
------------------------------------------------------------------------
------------------------------------------------------------------------
r20729 | florian | 2012-04-06 23:32:49 +0200 (Fri, 06 Apr 2012) | 1 line
Changed paths:
M /trunk/rtl/wince/wininc/messages.inc

+ WM_IME_REQUEST, resolves #21666
------------------------------------------------------------------------
------------------------------------------------------------------------
r20760 | marco | 2012-04-08 20:28:50 +0200 (Sun, 08 Apr 2012) | 2 lines
Changed paths:
M /trunk/packages/winunits-base/src/imm.pas

* added some ifdef unicode for mantis #21667

------------------------------------------------------------------------
------------------------------------------------------------------------
r20772 | pierre | 2012-04-09 23:54:19 +0200 (Mon, 09 Apr 2012) | 1 line
Changed paths:
M /trunk/rtl/unix/video.pp

Set local variable s to empty string at entry of transform_cp437_to_UTF8 function
------------------------------------------------------------------------
------------------------------------------------------------------------
r20779 | michael | 2012-04-10 09:49:40 +0200 (Tue, 10 Apr 2012) | 1 line
Changed paths:
M /trunk/rtl/objpas/classes/classesh.inc
M /trunk/rtl/objpas/classes/collect.inc

* Fix for bug #21691
------------------------------------------------------------------------

git-svn-id: branches/fixes_2_6@21000 -

marco 13 years ago
parent
commit
5076223479

+ 1 - 1
packages/gmp/src/gmp.pas

@@ -1,6 +1,6 @@
 {
     This file is part of the Free Pascal packages
-    Copyright (c) 2009 by the Free Pascal development team
+    Copyright (c) 2009 by Jan Mercl
 
     An header for the GMP library
 

+ 183 - 1
packages/winunits-base/src/imm.pas

@@ -115,6 +115,24 @@ type
   NPREGISTERWORDW = PtagREGISTERWORDW;
   LPREGISTERWORDW = PtagREGISTERWORDW;
 
+{$ifdef UNICODE}
+  PtagREGISTERWORD = PtagREGISTERWORDW;
+  tagREGISTERWORD  = tagREGISTERWORDW;
+  REGISTERWORD     = REGISTERWORDW;     
+  TREGISTERWORD    = TREGISTERWORDW;
+  PREGISTERWORD    = PREGISTERWORDW;
+  NPREGISTERWORD   = NPREGISTERWORDW;
+  LPREGISTERWORD   = LPREGISTERWORDW;
+{$else}
+  PtagREGISTERWORD = PtagREGISTERWORDA;
+  tagREGISTERWORD  = tagREGISTERWORDA;
+  REGISTERWORD     = REGISTERWORDA;
+  TREGISTERWORD    = TREGISTERWORDA;
+  PREGISTERWORD    = PREGISTERWORDA;
+  NPREGISTERWORD   = NPREGISTERWORDA;
+  LPREGISTERWORD   = LPREGISTERWORDA;
+{$endif}
+
 type
   PtagRECONVERTSTRING = ^tagRECONVERTSTRING;
   tagRECONVERTSTRING = packed record
@@ -160,6 +178,20 @@ type
   NPSTYLEBUFW = PtagSTYLEBUFW;
   LPSTYLEBUFW = PtagSTYLEBUFW;
 
+{$ifdef UNICODE}
+  STYLEBUF    = STYLEBUFW;
+  TSTYLEBUF   = TSTYLEBUFW;
+  PSTYLEBUF   = PSTYLEBUFW;
+  NPSTYLEBUF  = NPSTYLEBUFW;
+  LPSTYLEBUF  = LPSTYLEBUFW;
+{$else}
+  STYLEBUF    = STYLEBUFA;
+  TSTYLEBUF   = TSTYLEBUFA;
+  PSTYLEBUF   = PSTYLEBUFA;
+  NPSTYLEBUF  = NPSTYLEBUFA;
+  LPSTYLEBUF  = LPSTYLEBUFA;
+{$endif}
+
 const
   IMEMENUITEM_STRING_SIZE = 80;
 
@@ -201,6 +233,20 @@ type
   NPIMEMENUITEMINFOW = PtagIMEMENUITEMINFOW;
   LPIMEMENUITEMINFOW = PtagIMEMENUITEMINFOW;
 
+{$ifdef UNICODE}
+  IMEMENUITEMINFO    = IMEMENUITEMINFOW;
+  TIMEMENUITEMINFO   = TIMEMENUITEMINFOW;
+  PIMEMENUITEMINFO   = PIMEMENUITEMINFOW;
+  NPIMEMENUITEMINFO  = NPIMEMENUITEMINFOW;
+  LPIMEMENUITEMINFO  = LPIMEMENUITEMINFOW;
+{$else}
+  IMEMENUITEMINFO    = IMEMENUITEMINFOA;
+  TIMEMENUITEMINFO   = TIMEMENUITEMINFOA;
+  PIMEMENUITEMINFO   = PIMEMENUITEMINFOA;
+  NPIMEMENUITEMINFO  = NPIMEMENUITEMINFOA;
+  LPIMEMENUITEMINFO  = LPIMEMENUITEMINFOA;
+{$endif}
+
 type
   PtagIMECHARPOSITION = ^tagIMECHARPOSITION;
   tagIMECHARPOSITION = packed record
@@ -227,13 +273,31 @@ const
 
 function ImmInstallIMEA(lpszIMEFileName, lpszLayoutText: LPCSTR): HKL; stdcall; external Imm name 'ImmInstallIMEA';
 function ImmInstallIMEW(lpszIMEFileName, lpszLayoutText: LPCWSTR): HKL; stdcall; external Imm name 'ImmInstallIMEW';
+{$ifndef UNICODE}
+function ImmInstallIME(lpszIMEFileName, lpszLayoutText: LPCSTR): HKL; stdcall; external Imm name 'ImmInstallIMEA';
+{$else}
+function ImmInstallIME(lpszIMEFileName, lpszLayoutText: LPCWSTR): HKL; stdcall; external Imm name 'ImmInstallIMEW';
+{$endif}
+
 function ImmGetDefaultIMEWnd(wnd: HWND): HWND; stdcall; external Imm name 'ImmGetDefaultIMEWnd';
-function ImmGetDescriptionA(kl: HKL; lpszDescription: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionA';
+function NImmGetDescriptionA(kl: HKL; lpszDescription: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionA';
 function ImmGetDescriptionW(kl: HKL; lpszDescription: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionW';
 
+{$ifndef UNICODE}
+function ImmGetDescription(kl: HKL; lpszDescription: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionA';
+{$else}
+function ImmGetDescription(kl: HKL; lpszDescription: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionW';
+{$endif}
+
 function ImmGetIMEFileNameA(kl: HKL; lpszFileName: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameA';
 function ImmGetIMEFileNameW(kl: HKL; lpszFileName: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameW';
 
+{$ifndef UNICODE}
+function ImmGetIMEFileName(kl: HKL; lpszFileName: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameA';
+{$else}
+function ImmGetIMEFileName(kl: HKL; lpszFileName: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameW';
+{$endif}
+
 function ImmGetProperty (kl: HKL; fdwIndex: DWORD): DWORD; stdcall; external Imm name 'ImmGetProperty';
 function ImmIsIME(kl: HKL): LongBool; stdcall; external Imm name 'ImmIsIME';
 function ImmSimulateHotKey(wnd: HWND; dwHotKeyID: DWORD): LongBool; stdcall; external Imm name 'ImmSimulateHotKey';
@@ -251,24 +315,62 @@ function ImmGetCompositionStringA(imc: HIMC; dwIndex: DWORD;
 function ImmGetCompositionStringW(imc: HIMC; dwIndex: DWORD;
     lpBuf: LPVOID; dwBufLen: DWORD): Longword; stdcall; external Imm name 'ImmGetCompositionStringW';
 
+{$ifndef UNICODE}
+function ImmGetCompositionString(imc: HIMC; dwIndex: DWORD;
+    lpBuf: LPVOID; dwBufLen: DWORD): Longword; stdcall; external Imm name 'ImmGetCompositionStringA';
+{$else}
+function ImmGetCompositionString(imc: HIMC; dwIndex: DWORD;
+    lpBuf: LPVOID; dwBufLen: DWORD): Longword; stdcall; external Imm name 'ImmGetCompositionStringW';
+{$endif}
+
 function ImmSetCompositionStringA(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID;
     dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringA';
 function ImmSetCompositionStringW(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID;
     dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringW';
 
+{$ifndef UNICODE}
+function ImmSetCompositionString(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID;
+    dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringA';
+{$else}
+function ImmSetCompositionString(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID;
+    dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringW';
+{$endif}
+
 function ImmGetCandidateListCountA(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountA';
 function ImmGetCandidateListCountW(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountW';
 
+{$ifndef UNICODE}
+function ImmGetCandidateListCount(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountA';
+{$else}
+function ImmGetCandidateListCount(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountW';
+{$endif}
+
 function ImmGetCandidateListA(imc: HIMC; deIndex: DWORD;
     lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListA';
 function ImmGetCandidateListW(imc: HIMC; deIndex: DWORD;
     lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListW';
 
+{$ifndef UNICODE}
+function ImmGetCandidateList(imc: HIMC; deIndex: DWORD;
+    lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListA';
+{$else}
+function ImmGetCandidateList(imc: HIMC; deIndex: DWORD;
+    lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListW';
+{$endif}
+
 function ImmGetGuideLineA(imc: HIMC; dwIndex: DWORD; lpBuf: LPSTR;
     dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineA';
 function ImmGetGuideLineW(imc: HIMC; dwIndex: DWORD; lpBuf: LPWSTR;
     dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineW';
 
+{$ifndef UNICODE}
+function ImmGetGuideLine(imc: HIMC; dwIndex: DWORD; lpBuf: LPSTR;
+    dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineA';
+{$else}
+function ImmGetGuideLine(imc: HIMC; dwIndex: DWORD; lpBuf: LPWSTR;
+    dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineW';
+{$endif}
+
 function ImmGetConversionStatus(imc: HIMC; lpfdwConversion, lpfdwSentence: LPDWORD): LongBool; stdcall ; external Imm name 'ImmGetConversionStatus';
 function ImmSetConversionStatus(imc: HIMC; fdwConversion, fdwSentence: DWORD): LongBool; stdcall ; external Imm name 'ImmSetConversionStatus';
 function ImmGetOpenStatus(imc: HIMC): LongBool; stdcall ; external Imm name 'ImmGetOpenStatus';
@@ -277,20 +379,52 @@ function ImmSetOpenStatus(imc: HIMC; par1: LongBool): LongBool; stdcall ; extern
 function ImmGetCompositionFontA(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontA';
 function ImmGetCompositionFontW(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontW';
 
+{$ifndef UNICODE}
+function ImmGetCompositionFont(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontA';
+{$else}
+function ImmGetCompositionFont(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontW';
+{$endif}
+
 function ImmSetCompositionFontA(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontA';
 function ImmSetCompositionFontW(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontW';
 
+{$ifndef UNICODE}
+function ImmSetCompositionFont(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontA';
+{$else}
+function ImmSetCompositionFont(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontW';
+{$endif}
+
 function ImmConfigureIMEA(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEA';
 function ImmConfigureIMEW(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEW';
 
+{$ifndef UNICODE}
+function ImmConfigureIME(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEA';
+{$else}
+function ImmConfigureIME(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEW';
+{$endif}
+
 function ImmEscapeA(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeA';
 function ImmEscapeW(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeW';
 
+{$ifndef UNICODE}
+function ImmEscape(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeA';
+{$else}
+function ImmEscape(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeW';
+{$endif}
+
 function ImmGetConversionListA(kl: HKL; imc: HIMC; lpSrc: LPCSTR;
     lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListA';
 function ImmGetConversionListW(kl: HKL; imc: HIMC; lpSrc: LPCWSTR;
     lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListW';
 
+{$ifndef UNICODE}
+function ImmGetConversionList(kl: HKL; imc: HIMC; lpSrc: LPCSTR;
+    lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListA';
+{$else}
+function ImmGetConversionList(kl: HKL; imc: HIMC; lpSrc: LPCWSTR;
+    lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListW';
+{$endif}
+
 function ImmNotifyIME(imc: HIMC; dwAction, dwIndex, dwValue: DWORD): LongBool; stdcall ; external Imm name 'ImmNotifyIME';
 function ImmGetStatusWindowPos(imc: HIMC; lpptPos: LPPOINT): LongBool; stdcall ; external Imm name 'ImmGetStatusWindowPos';
 function ImmSetStatusWindowPos(imc: HIMC; lpptPos: LPPOINT): LongBool; stdcall ; external Imm name 'ImmSetStatusWindowPos';
@@ -302,6 +436,12 @@ function ImmSetCandidateWindow(imc: HIMC; lpCandidate: LPCANDIDATEFORM): LongBoo
 function ImmIsUIMessageA(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageA';
 function ImmIsUIMessageW(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageW';
 
+{$ifndef UNICODE}
+function ImmIsUIMessage(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageA';
+{$else}
+function ImmIsUIMessage(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageW';
+{$endif}
+
 function ImmGetVirtualKey(wnd: HWND): UINT; stdcall ; external Imm name 'ImmGetVirtualKey';
 
 type
@@ -312,21 +452,55 @@ type
   REGISTERWORDENUMPROCW = function(lpszReading: LPCWSTR; par1: DWORD;
     lpszString: LPCWSTR; par3: LPVOID): Integer; stdcall;
   TREGISTERWORDENUMPROCW = REGISTERWORDENUMPROCW;
+  {$ifdef UNICODE}
+    TREGISTERWORDENUMPROC = REGISTERWORDENUMPROCW;
+    REGISTERWORDENUMPROC  = REGISTERWORDENUMPROCW;
+  {$else}
+    TREGISTERWORDENUMPROC = REGISTERWORDENUMPROCA;
+    REGISTERWORDENUMPROC  = REGISTERWORDENUMPROCA;
+  {$endif}
 
 function ImmRegisterWordA(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordA';
 function ImmRegisterWordW(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordW';
 
+
+{$ifndef UNICODE}
+function ImmRegisterWord(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordA';
+{$else}
+function ImmRegisterWord(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordW';
+{$endif}
+
 function ImmUnregisterWordA(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszUnregister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordA';
 function ImmUnregisterWordW(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszUnregister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordW';
 
+{$ifndef UNICODE}
+function ImmUnregisterWord(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszUnregister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordA';
+{$else}
+function ImmUnregisterWord(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszUnregister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordW';
+{$endif}
+
 function ImmGetRegisterWordStyleA(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFA): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleA';
 function ImmGetRegisterWordStyleW(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFW): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleW';
 
+{$ifndef UNICODE}
+function ImmGetRegisterWordStyle(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFA): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleA';
+{$else}
+function ImmGetRegisterWordStyle(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFW): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleW';
+{$endif}
+
 function ImmEnumRegisterWordA(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCA;
     lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordA';
 function ImmEnumRegisterWordW(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCW;
     lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordW';
 
+{$ifndef UNICODE}
+function ImmEnumRegisterWord(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCA;
+    lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordA';
+{$else}
+function ImmEnumRegisterWord(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCW;
+    lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordW';
+{$endif}
+
 function ImmDisableIME(idThread: DWORD): LongBool; stdcall  ; external Imm name 'ImmDisableIME';
 function ImmEnumInputContext(idThread: DWORD; lpfn: IMCENUMPROC; lParam: LPARAM): LongBool; stdcall ; external Imm name 'ImmEnumInputContext';
 function ImmGetImeMenuItemsA(imc: HIMC; dwFlags, dwType: DWORD;
@@ -334,6 +508,14 @@ function ImmGetImeMenuItemsA(imc: HIMC; dwFlags, dwType: DWORD;
 function ImmGetImeMenuItemsW(par0: HIMC; dwFlags, dwType: DWORD;
     lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOW; dwSize: DWORD): DWORD; stdcall ; external Imm name 'ImmGetImeMenuItemsW';
 
+{$ifndef UNICODE}
+function ImmGetImeMenuItems(imc: HIMC; dwFlags, dwType: DWORD;
+    lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOA; dwSize: DWORD): DWORD; stdcall ; external Imm name 'ImmGetImeMenuItemsA';
+{$else}
+function ImmGetImeMenuItems(par0: HIMC; dwFlags, dwType: DWORD;
+    lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOW; dwSize: DWORD): DWORD; stdcall ; external Imm name 'ImmGetImeMenuItemsW';
+{$endif}
+
 function ImmDisableTextFrameService(idThread: DWORD): LongBool; stdcall ; external Imm name 'ImmDisableTextFrameService';
 
 // wParam for WM_IME_CONTROL

+ 3 - 1
rtl/objpas/classes/classesh.inc

@@ -487,6 +487,7 @@ type
     function GetPropName: string;
     procedure InsertItem(Item: TCollectionItem);
     procedure RemoveItem(Item: TCollectionItem);
+    procedure DoClear;
   protected
     { Design-time editor support }
     function GetAttrCount: Integer; dynamic;
@@ -606,7 +607,8 @@ type
     function Add(const S: string): Integer; virtual;
     function AddObject(const S: string; AObject: TObject): Integer; virtual;
     procedure Append(const S: string);
-    procedure AddStrings(TheStrings: TStrings); virtual;
+    procedure AddStrings(TheStrings: TStrings); overload; virtual;
+    procedure AddStrings(const TheStrings: array of string); overload; virtual;
     procedure Assign(Source: TPersistent); override;
     procedure BeginUpdate;
     procedure Clear; virtual; abstract;

+ 20 - 5
rtl/objpas/classes/collect.inc

@@ -304,7 +304,11 @@ end;
 
 destructor TCollection.Destroy;
 begin
-  If Assigned(FItems) Then Clear;
+  If Assigned(FItems) Then 
+    begin
+    BeginUpdate; // Prevent OnChange
+    DoClear;
+    end;
   FItems.Free;
   Inherited Destroy;
 end;
@@ -333,11 +337,22 @@ end;
 
 procedure TCollection.BeginUpdate;
 begin
-        inc(FUpdateCount);
+  inc(FUpdateCount);
 end;
 
 
 procedure TCollection.Clear;
+begin
+  BeginUpdate;
+  try
+    DoClear;
+  finally
+    EndUpdate;
+  end;    
+end;
+
+
+procedure TCollection.DoClear;
 begin
   If Assigned(FItems) then
     While FItems.Count>0 do TCollectionItem(FItems.Last).Free;
@@ -346,9 +361,9 @@ end;
 
 procedure TCollection.EndUpdate;
 begin
-        dec(FUpdateCount);
-        if FUpdateCount=0 then
-          Changed;
+  dec(FUpdateCount);
+  if FUpdateCount=0 then
+    Changed;
 end;
 
 

+ 14 - 0
rtl/objpas/classes/stringl.inc

@@ -603,7 +603,21 @@ begin
   end;
 end;
 
+Procedure TStrings.AddStrings(const TheStrings: array of string);
 
+Var Runner : longint;
+
+begin
+  try
+    beginupdate;
+    if Count + High(TheStrings)+1 > Capacity then
+      Capacity := Count + High(TheStrings)+1;
+    For Runner:=Low(TheStrings) to High(TheStrings) do
+      self.Add(Thestrings[Runner]);
+  finally
+    EndUpdate;
+  end;
+end;
 
 Procedure TStrings.Assign(Source: TPersistent);
 

+ 1 - 1
rtl/unix/video.pp

@@ -633,7 +633,7 @@ var
       converted : WideChar;
       s : WideString;
   begin
-    transform_cp437_to_UTF8 := '';
+    s := '';
     for i:=1 to length(st) do
       begin
         c:=st[i];

+ 2 - 1
rtl/wince/wininc/messages.inc

@@ -994,8 +994,9 @@
      WM_ICONERASEBKGND = 39;
      WM_IME_CHAR = 646;
      WM_IME_COMPOSITION = 271;
-     WM_IME_COMPOSITIONFULL = 644;
      WM_IME_CONTROL = 643;
+     WM_IME_COMPOSITIONFULL = 644;
+     WM_IME_REQUEST = $0288;
      WM_IME_ENDCOMPOSITION = 270;
      WM_IME_KEYDOWN = 656;
      WM_IME_KEYUP = 657;