win32u: Move WM_KEYF1 implementation from user32.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
This commit is contained in:
Jacek Caban 2022-06-11 02:39:41 +02:00 committed by Alexandre Julliard
parent 95b76f5101
commit dad8044f1a
6 changed files with 38 additions and 26 deletions

View file

@ -435,29 +435,6 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
SendMessageW( parent, msg, wParam, lParam );
break;
}
case WM_KEYF1:
{
HELPINFO hi;
hi.cbSize = sizeof(HELPINFO);
GetCursorPos( &hi.MousePos );
if (MENU_IsMenuActive())
{
hi.iContextType = HELPINFO_MENUITEM;
hi.hItemHandle = MENU_IsMenuActive();
hi.iCtrlId = MenuItemFromPoint( hwnd, hi.hItemHandle, hi.MousePos );
hi.dwContextId = GetMenuContextHelpId( hi.hItemHandle );
}
else
{
hi.iContextType = HELPINFO_WINDOW;
hi.hItemHandle = hwnd;
hi.iCtrlId = GetWindowLongPtrA( hwnd, GWLP_ID );
hi.dwContextId = GetWindowContextHelpId( hwnd );
}
SendMessageW( hwnd, WM_HELP, 0, (LPARAM)&hi );
break;
}
case WM_INPUTLANGCHANGEREQUEST:
NtUserActivateKeyboardLayout( (HKL)lParam, 0 );

View file

@ -1766,6 +1766,33 @@ LRESULT default_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam,
case WM_SYSCOMMAND:
result = handle_sys_command( hwnd, wparam, lparam );
break;
case WM_KEYF1:
{
HELPINFO hi;
hi.cbSize = sizeof(HELPINFO);
get_cursor_pos( &hi.MousePos );
if (is_menu_active())
{
MENUINFO info = { .cbSize = sizeof(info), .fMask = MIM_HELPID };
hi.iContextType = HELPINFO_MENUITEM;
hi.hItemHandle = is_menu_active();
hi.iCtrlId = NtUserMenuItemFromPoint( hwnd, hi.hItemHandle,
hi.MousePos.x, hi.MousePos.y );
get_menu_info( hi.hItemHandle, &info );
hi.dwContextId = info.dwContextHelpID;
}
else
{
hi.iContextType = HELPINFO_WINDOW;
hi.hItemHandle = hwnd;
hi.iCtrlId = get_window_long_ptr( hwnd, GWLP_ID, FALSE );
hi.dwContextId = get_window_context_help_id( hwnd );
}
send_message( hwnd, WM_HELP, 0, (LPARAM)&hi );
break;
}
}
return result;

View file

@ -2492,3 +2492,9 @@ LRESULT popup_menu_window_proc( HWND hwnd, UINT message, WPARAM wparam, LPARAM l
}
return 0;
}
HWND is_menu_active(void)
{
if (!user_callbacks) return 0;
return user_callbacks->is_menu_active();
}

View file

@ -1346,7 +1346,7 @@ static BOOL process_keyboard_message( MSG *msg, UINT hw_id, HWND hwnd_filter,
else if (msg->message == WM_KEYUP)
{
/* Handle VK_APPS key by posting a WM_CONTEXTMENU message */
if (msg->wParam == VK_APPS && user_callbacks && !user_callbacks->is_menu_active())
if (msg->wParam == VK_APPS && !is_menu_active())
NtUserPostMessage( msg->hwnd, WM_CONTEXTMENU, (WPARAM)msg->hwnd, -1 );
}
}

View file

@ -402,6 +402,7 @@ extern BOOL get_menu_info( HMENU handle, MENUINFO *info ) DECLSPEC_HIDDEN;
extern INT get_menu_item_count( HMENU handle ) DECLSPEC_HIDDEN;
extern UINT get_menu_state( HMENU handle, UINT item_id, UINT flags ) DECLSPEC_HIDDEN;
extern BOOL is_menu( HMENU handle ) DECLSPEC_HIDDEN;
extern HWND is_menu_active(void) DECLSPEC_HIDDEN;
extern LRESULT popup_menu_window_proc( HWND hwnd, UINT message, WPARAM wparam,
LPARAM lparam ) DECLSPEC_HIDDEN;
extern BOOL set_window_menu( HWND hwnd, HMENU handle ) DECLSPEC_HIDDEN;
@ -463,6 +464,7 @@ extern HWND get_parent( HWND hwnd ) DECLSPEC_HIDDEN;
extern HWND get_hwnd_message_parent(void) DECLSPEC_HIDDEN;
extern DPI_AWARENESS_CONTEXT get_window_dpi_awareness_context( HWND hwnd ) DECLSPEC_HIDDEN;
extern MINMAXINFO get_min_max_info( HWND hwnd ) DECLSPEC_HIDDEN;
extern DWORD get_window_context_help_id( HWND hwnd ) DECLSPEC_HIDDEN;
extern HWND get_window_relative( HWND hwnd, UINT rel ) DECLSPEC_HIDDEN;
extern DWORD get_window_thread( HWND hwnd, DWORD *process ) DECLSPEC_HIDDEN;
extern HWND is_current_process_window( HWND hwnd ) DECLSPEC_HIDDEN;

View file

@ -4524,7 +4524,7 @@ BOOL WINAPI NtUserFlashWindowEx( FLASHWINFO *info )
}
/* see GetWindowContextHelpId */
static DWORD get_window_context_help_id( HWND hwnd )
DWORD get_window_context_help_id( HWND hwnd )
{
DWORD retval;
WND *win = get_win_ptr( hwnd );
@ -4759,7 +4759,7 @@ BOOL WINAPI NtUserDestroyWindow( HWND hwnd )
if (call_hooks( WH_CBT, HCBT_DESTROYWND, (WPARAM)hwnd, 0, TRUE )) return FALSE;
if (user_callbacks && user_callbacks->is_menu_active() == hwnd)
if (user_callbacks && is_menu_active() == hwnd)
user_callbacks->pEndMenu();
is_child = (get_window_long( hwnd, GWL_STYLE ) & WS_CHILD) != 0;