* CFocusManager: Try to fix some weird behaviour.
* CMergedFolder: Downgrade some prints to TRACEs, and implement a couple methods needed by some debugging code.
* Activate merged folders by default. TODO: implement the filtering of the "Programs" submenu, and use it for the real Programs menu item.

[SHELL32]
* defcontextmenu.cpp: Make a copy of the apidl array before storing it for later, since it may be a pointer to the stack which may not be available later. Fixes the merged folders not working on clicks and context menu.
* shlmenu.cpp: While debugging, I made Shell_MergeMenus closer to WINE's.

svn path=/branches/shell-experiments/; revision=63702
This commit is contained in:
David Quintana 2014-07-09 00:42:05 +00:00
parent 2ac4637056
commit 0ffe346179
8 changed files with 95 additions and 37 deletions

View file

@ -319,7 +319,7 @@ LRESULT CMenuFocusManager::ProcessMouseMove(MSG* msg)
}
BOOL isTracking = FALSE;
if (entry)
if (entry && (entry->type == MenuBarEntry || m_current->type != TrackedMenuEntry))
{
ScreenToClient(child, &pt);
iHitTestResult = SendMessageW(child, TB_HITTEST, 0, (LPARAM) &pt);
@ -485,9 +485,23 @@ LRESULT CMenuFocusManager::MsgFilterHook(INT nCode, WPARAM hookWParam, LPARAM ho
if (hoveringMenuBar)
{
m_menuBar->mb->_DisableMouseTrack(TRUE);
if (m_current->type == TrackedMenuEntry)
{
SendMessage(m_parent->hwnd, WM_CANCELMODE, 0, 0);
msg->message = WM_NULL;
}
}
}
break;
case WM_NCLBUTTONUP:
case WM_LBUTTONUP:
case WM_NCRBUTTONUP:
case WM_RBUTTONUP:
if (m_current && m_current->type != TrackedMenuEntry)
{
msg->message = WM_NULL;
}
break;
case WM_MOUSEMOVE:
callNext = ProcessMouseMove(msg);
break;