Alexandre Julliard : user: Added fast W-> A mapping for LB_ADDSTRING and related messages.
Module: wine Branch: refs/heads/master Commit: 96a430f530d2a43e1338d24daedd0a1343920a64 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=96a430f530d2a43e1338d24d... Author: Alexandre Julliard <julliard(a)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",
participants (1)
-
Alexandre Julliard