Alexandre Julliard : user: Added fast W->
A mapping for LB_ADDSTRING and related messages.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu May 18 09:43:54 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 96a430f530d2a43e1338d24daedd0a1343920a64
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=96a430f530d2a43e1338d24daedd0a1343920a64
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu May 18 11:46:07 2006 +0200
user: Added fast W->A mapping for LB_ADDSTRING and related messages.
---
dlls/user/winproc.c | 69 ++++++++++++++++-----------------------------------
1 files changed, 21 insertions(+), 48 deletions(-)
diff --git a/dlls/user/winproc.c b/dlls/user/winproc.c
index b852fb5..fe9905b 100644
--- a/dlls/user/winproc.c
+++ b/dlls/user/winproc.c
@@ -993,21 +993,6 @@ static INT WINPROC_MapMsg32WTo32A( HWND
switch(msg)
{
/* Listbox */
- case LB_ADDSTRING:
- case LB_INSERTSTRING:
- case LB_FINDSTRING:
- case LB_FINDSTRINGEXACT:
- case LB_SELECTSTRING:
- if(!*plparam) return 0;
- if ( WINPROC_TestLBForStr( hwnd ))
- {
- int len = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)*plparam, -1, NULL, 0, 0, 0);
- LPSTR buf = HeapAlloc(GetProcessHeap(), 0, len);
- if (buf) WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)*plparam, -1, buf, len, 0, 0);
- *plparam = (LPARAM)buf;
- }
- return (*plparam ? 1 : -1);
-
case LB_GETTEXT: /* FIXME: fixed sized buffer */
{ if ( WINPROC_TestLBForStr( hwnd ))
{ LPARAM *ptr = HeapAlloc( GetProcessHeap(), 0, 512 + sizeof(LPARAM) );
@@ -1019,21 +1004,6 @@ static INT WINPROC_MapMsg32WTo32A( HWND
return 1;
/* Combobox */
- case CB_ADDSTRING:
- case CB_INSERTSTRING:
- case CB_FINDSTRING:
- case CB_FINDSTRINGEXACT:
- case CB_SELECTSTRING:
- if(!*plparam) return 0;
- if ( WINPROC_TestCBForStr( hwnd ))
- {
- int len = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)*plparam, -1, NULL, 0, 0, 0);
- LPSTR buf = HeapAlloc(GetProcessHeap(), 0, len);
- if (buf) WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)*plparam, -1, buf, len, 0, 0);
- *plparam = (LPARAM)buf;
- }
- return (*plparam ? 1 : -1);
-
case CB_GETLBTEXT: /* FIXME: fixed sized buffer */
{ if ( WINPROC_TestCBForStr( hwnd ))
{ LPARAM *ptr = HeapAlloc( GetProcessHeap(), 0, 512 + sizeof(LPARAM) );
@@ -1102,15 +1072,6 @@ static LRESULT WINPROC_UnmapMsg32WTo32A(
switch(msg)
{
/* Listbox */
- case LB_ADDSTRING:
- case LB_INSERTSTRING:
- case LB_FINDSTRING:
- case LB_FINDSTRINGEXACT:
- case LB_SELECTSTRING:
- if ( WINPROC_TestLBForStr( hwnd ))
- HeapFree( GetProcessHeap(), 0, (void *)lParam );
- break;
-
case LB_GETTEXT:
if ( WINPROC_TestLBForStr( hwnd ))
{
@@ -1122,15 +1083,6 @@ static LRESULT WINPROC_UnmapMsg32WTo32A(
break;
/* Combobox */
- case CB_ADDSTRING:
- case CB_INSERTSTRING:
- case CB_FINDSTRING:
- case CB_FINDSTRINGEXACT:
- case CB_SELECTSTRING:
- if ( WINPROC_TestCBForStr( hwnd ))
- HeapFree( GetProcessHeap(), 0, (void *)lParam );
- break;
-
case CB_GETLBTEXT:
if ( result < 0) /* CB_ERR and CB_ERRSPACE */
{
@@ -3002,6 +2954,7 @@ static LRESULT WINPROC_CallProc32WTo32A(
case LB_DIR:
case LB_ADDFILE:
case EM_REPLACESEL:
+ handle_wm_settext:
if (!lParam) ret = WINPROC_CallWndProc( func, hwnd, msg, wParam, lParam );
else
{
@@ -3056,6 +3009,26 @@ static LRESULT WINPROC_CallProc32WTo32A(
}
break;
+/* Listbox */
+ case LB_ADDSTRING:
+ case LB_INSERTSTRING:
+ case LB_FINDSTRING:
+ case LB_FINDSTRINGEXACT:
+ case LB_SELECTSTRING:
+ if (lParam && WINPROC_TestLBForStr( hwnd )) goto handle_wm_settext;
+ ret = WINPROC_CallWndProc( func, hwnd, msg, wParam, lParam );
+ break;
+
+/* Combobox */
+ case CB_ADDSTRING:
+ case CB_INSERTSTRING:
+ case CB_FINDSTRING:
+ case CB_FINDSTRINGEXACT:
+ case CB_SELECTSTRING:
+ if (lParam && WINPROC_TestCBForStr( hwnd )) goto handle_wm_settext;
+ ret = WINPROC_CallWndProc( func, hwnd, msg, wParam, lParam );
+ break;
+
default:
if ((unmap = WINPROC_MapMsg32WTo32A( hwnd, msg, &wParam, &lParam )) == -1) {
ERR_(msg)("Message translation failed. (msg=%s,wp=%08x,lp=%08lx)\n",
More information about the wine-cvs
mailing list