mirror of
https://github.com/reactos/reactos.git
synced 2025-07-06 19:31:22 +00:00
[RSHELL]
* Implemented horizontal keyboard navigation on the menubar. Does not yet work for the Favorites menu, which is a shell popup and not a tracked popup. Also missing the system menu in the rotation. svn path=/branches/shell-experiments/; revision=62757
This commit is contained in:
parent
9c589bb131
commit
dc8f232870
3 changed files with 61 additions and 41 deletions
|
@ -609,11 +609,15 @@ HRESULT CMenuToolbarBase::ChangeHotItem(CMenuToolbarBase * toolbar, INT item, DW
|
|||
|
||||
if (m_hotBar == this)
|
||||
{
|
||||
if (dwFlags & HICF_MOUSE)
|
||||
if (m_isTrackingPopup && !(m_initFlags & SMINIT_VERTICAL))
|
||||
{
|
||||
// If the menubar has an open submenu, switch to the new item's submenu immediately
|
||||
PopupItem(m_hotItem);
|
||||
}
|
||||
else if (dwFlags & HICF_MOUSE)
|
||||
{
|
||||
// Vertical menus show/hide the submenu after a delay,
|
||||
// but horizontal menubars switch between items instantly,
|
||||
// if they were open.
|
||||
// but only with the mouse.
|
||||
if (m_initFlags & SMINIT_VERTICAL)
|
||||
{
|
||||
DWORD elapsed = 0;
|
||||
|
@ -622,11 +626,6 @@ HRESULT CMenuToolbarBase::ChangeHotItem(CMenuToolbarBase * toolbar, INT item, DW
|
|||
m_timerEnabled = TRUE;
|
||||
TRACE("SetTimer called with m_hotItem=%d\n", m_hotItem);
|
||||
}
|
||||
else if (m_isTrackingPopup)
|
||||
{
|
||||
// If the menubar has an open submenu, switch to the new item's submenu immediately
|
||||
PopupItem(m_hotItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -704,6 +703,7 @@ HRESULT CMenuToolbarBase::ChangeTrackedItem(INT index, BOOL wasTracking)
|
|||
if (!SendMessage(m_hwndToolbar, TB_GETBUTTON, index, reinterpret_cast<LPARAM>(&btn)))
|
||||
return E_FAIL;
|
||||
|
||||
DbgPrint("ChangeTrackedItem %d, %d\n", index, wasTracking);
|
||||
m_isTrackingPopup = wasTracking;
|
||||
return m_menuBand->_ChangeHotItem(this, btn.idCommand, HICF_MOUSE);
|
||||
}
|
||||
|
@ -912,8 +912,16 @@ HRESULT CMenuToolbarBase::KeyboardItemChange(DWORD dwSelectType)
|
|||
{
|
||||
if (prev != btn.idCommand)
|
||||
{
|
||||
TRACE("Setting Hot item to %d\n", index);
|
||||
m_menuBand->_ChangeHotItem(this, btn.idCommand, 0);
|
||||
DbgPrint("Setting Hot item to %d\n", index);
|
||||
if (!(m_initFlags & SMINIT_VERTICAL) && m_isTrackingPopup)
|
||||
{
|
||||
HWND tlw;
|
||||
m_menuBand->_GetTopLevelWindow(&tlw);
|
||||
SendMessage(tlw, WM_CANCELMODE, 0, 0);
|
||||
PostMessage(m_hwndToolbar, WM_USER_CHANGETRACKEDITEM, index, m_isTrackingPopup);
|
||||
}
|
||||
else
|
||||
m_menuBand->_ChangeHotItem(this, btn.idCommand, 0);
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue