* Fix gcc build.
* Wip beginning of horizontal menubar keyboard navigation. Not working yet. ;P
CORE-7586

svn path=/branches/shell-experiments/; revision=62755
This commit is contained in:
David Quintana 2014-04-15 22:30:37 +00:00
parent 5e4427d973
commit 18a587e569
3 changed files with 37 additions and 1 deletions

View file

@ -157,6 +157,9 @@ CMenuFocusManager::CMenuFocusManager() :
m_captureHwnd(0),
m_hwndUnderMouse(NULL),
m_entryUnderMouse(NULL),
m_selectedMenu(NULL),
m_selectedItem(0),
m_selectedItemFlags(0),
m_bandCount(0)
{
m_ptPrev.x = 0;
@ -355,6 +358,35 @@ LRESULT CMenuFocusManager::MsgFilterHook(INT nCode, WPARAM wParam, LPARAM lParam
case WM_MOUSEMOVE:
callNext = ProcessMouseMove(msg);
break;
case WM_INITMENUPOPUP:
DbgPrint("WM_INITMENUPOPUP %p %p\n", wParam, lParam);
m_selectedMenu = reinterpret_cast<HMENU>(lParam);
m_selectedItem = -1;
m_selectedItemFlags = 0;
break;
case WM_MENUSELECT:
DbgPrint("WM_MENUSELECT %p %p\n", wParam, lParam);
m_selectedMenu = reinterpret_cast<HMENU>(lParam);
m_selectedItem = LOWORD(wParam);
m_selectedItemFlags = HIWORD(wParam);
break;
case WM_KEYDOWN:
switch (msg->wParam)
{
case VK_LEFT:
if (m_current->hmenu == m_selectedMenu)
{
m_parent->mb->_MenuItemHotTrack(VK_LEFT);
}
break;
case VK_RIGHT:
if (!(m_selectedItemFlags & MF_POPUP))
{
m_parent->mb->_MenuItemHotTrack(VK_RIGHT);
}
break;
}
break;
}
if (!callNext)

View file

@ -73,6 +73,10 @@ private:
HWND m_hwndUnderMouse;
StackEntry * m_entryUnderMouse;
HMENU m_selectedMenu;
INT m_selectedItem;
DWORD m_selectedItemFlags;
// TODO: make dynamic
#define MAX_RECURSE 20
StackEntry m_bandStack[MAX_RECURSE];

View file

@ -277,12 +277,12 @@ HRESULT CMenuToolbarBase::OnCustomDraw(LPNMTBCUSTOMDRAW cdraw, LRESULT * theResu
CMenuToolbarBase::CMenuToolbarBase(CMenuBand *menuBand, BOOL usePager) :
m_hwnd(NULL),
m_hwndToolbar(NULL),
m_useFlatMenus(FALSE),
m_SubclassOld(NULL),
m_disableMouseTrack(FALSE),
m_timerEnabled(FALSE),
m_menuBand(menuBand),
m_hwndToolbar(NULL),
m_dwMenuFlags(0),
m_hasSizes(FALSE),
m_usePager(usePager),