Commit c0f3f5a1 authored by Alexandre Julliard's avatar Alexandre Julliard

user32: Pre-allocate the window procedure for the listbox class.

parent 87ede894
...@@ -36,6 +36,7 @@ enum builtin_winprocs ...@@ -36,6 +36,7 @@ enum builtin_winprocs
WINPROC_BUTTON = 0, WINPROC_BUTTON = 0,
WINPROC_COMBO, WINPROC_COMBO,
WINPROC_EDIT, WINPROC_EDIT,
WINPROC_LISTBOX,
NB_BUILTIN_WINPROCS NB_BUILTIN_WINPROCS
}; };
......
...@@ -128,9 +128,6 @@ typedef enum ...@@ -128,9 +128,6 @@ typedef enum
static TIMER_DIRECTION LISTBOX_Timer = LB_TIMER_NONE; static TIMER_DIRECTION LISTBOX_Timer = LB_TIMER_NONE;
static LRESULT WINAPI ListBoxWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI ListBoxWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT LISTBOX_GetItemRect( const LB_DESCR *descr, INT index, RECT *rect ); static LRESULT LISTBOX_GetItemRect( const LB_DESCR *descr, INT index, RECT *rect );
/********************************************************************* /*********************************************************************
...@@ -141,8 +138,8 @@ const struct builtin_class_descr LISTBOX_builtin_class = ...@@ -141,8 +138,8 @@ const struct builtin_class_descr LISTBOX_builtin_class =
{ {
listboxW, /* name */ listboxW, /* name */
CS_DBLCLKS /*| CS_PARENTDC*/, /* style */ CS_DBLCLKS /*| CS_PARENTDC*/, /* style */
ListBoxWndProcA, /* procA */ NULL, /* procA */
ListBoxWndProcW, /* procW */ BUILTIN_WINPROC(WINPROC_LISTBOX), /* procW */
sizeof(LB_DESCR *), /* extra */ sizeof(LB_DESCR *), /* extra */
IDC_ARROW, /* cursor */ IDC_ARROW, /* cursor */
0 /* brush */ 0 /* brush */
...@@ -157,8 +154,8 @@ const struct builtin_class_descr COMBOLBOX_builtin_class = ...@@ -157,8 +154,8 @@ const struct builtin_class_descr COMBOLBOX_builtin_class =
{ {
combolboxW, /* name */ combolboxW, /* name */
CS_DBLCLKS | CS_SAVEBITS, /* style */ CS_DBLCLKS | CS_SAVEBITS, /* style */
ListBoxWndProcA, /* procA */ NULL, /* procA */
ListBoxWndProcW, /* procW */ BUILTIN_WINPROC(WINPROC_LISTBOX), /* procW */
sizeof(LB_DESCR *), /* extra */ sizeof(LB_DESCR *), /* extra */
IDC_ARROW, /* cursor */ IDC_ARROW, /* cursor */
0 /* brush */ 0 /* brush */
...@@ -3179,19 +3176,3 @@ LRESULT ListBoxWndProc_common( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ...@@ -3179,19 +3176,3 @@ LRESULT ListBoxWndProc_common( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
return unicode ? DefWindowProcW( hwnd, msg, wParam, lParam ) : return unicode ? DefWindowProcW( hwnd, msg, wParam, lParam ) :
DefWindowProcA( hwnd, msg, wParam, lParam ); DefWindowProcA( hwnd, msg, wParam, lParam );
} }
/***********************************************************************
* ListBoxWndProcA
*/
static LRESULT WINAPI ListBoxWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
return wow_handlers.listbox_proc( hwnd, msg, wParam, lParam, FALSE );
}
/***********************************************************************
* ListBoxWndProcW
*/
static LRESULT WINAPI ListBoxWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
return wow_handlers.listbox_proc( hwnd, msg, wParam, lParam, TRUE );
}
...@@ -55,12 +55,15 @@ static LRESULT WINAPI ComboWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM ...@@ -55,12 +55,15 @@ static LRESULT WINAPI ComboWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM
static LRESULT WINAPI ComboWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); static LRESULT WINAPI ComboWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
LRESULT WINAPI EditWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); LRESULT WINAPI EditWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI EditWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); static LRESULT WINAPI EditWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI ListBoxWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI ListBoxWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static WINDOWPROC winproc_array[MAX_WINPROCS] = static WINDOWPROC winproc_array[MAX_WINPROCS] =
{ {
{ ButtonWndProcA, ButtonWndProcW }, /* WINPROC_BUTTON */ { ButtonWndProcA, ButtonWndProcW }, /* WINPROC_BUTTON */
{ ComboWndProcA, ComboWndProcW }, /* WINPROC_COMBO */ { ComboWndProcA, ComboWndProcW }, /* WINPROC_COMBO */
{ EditWndProcA, EditWndProcW }, /* WINPROC_EDIT */ { EditWndProcA, EditWndProcW }, /* WINPROC_EDIT */
{ ListBoxWndProcA, ListBoxWndProcW },/* WINPROC_LISTBOX */
}; };
static UINT builtin_used = NB_BUILTIN_WINPROCS; static UINT builtin_used = NB_BUILTIN_WINPROCS;
...@@ -1076,6 +1079,16 @@ static LRESULT WINAPI EditWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM l ...@@ -1076,6 +1079,16 @@ static LRESULT WINAPI EditWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM l
return wow_handlers.edit_proc( hwnd, msg, wParam, lParam, TRUE ); return wow_handlers.edit_proc( hwnd, msg, wParam, lParam, TRUE );
} }
static LRESULT WINAPI ListBoxWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
return wow_handlers.listbox_proc( hwnd, msg, wParam, lParam, FALSE );
}
static LRESULT WINAPI ListBoxWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
return wow_handlers.listbox_proc( hwnd, msg, wParam, lParam, TRUE );
}
/********************************************************************** /**********************************************************************
* UserRegisterWowHandlers (USER32.@) * UserRegisterWowHandlers (USER32.@)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment