mirror of
https://github.com/reactos/reactos.git
synced 2025-07-30 21:51:47 +00:00
[RSHELL]
* Fix executing items after the menu has closed. svn path=/branches/shell-experiments/; revision=65074
This commit is contained in:
parent
180b6fb083
commit
30a510975b
3 changed files with 19 additions and 9 deletions
|
@ -948,14 +948,18 @@ HRESULT CMenuBand::_MenuItemHotTrack(DWORD changeType)
|
||||||
switch (changeType)
|
switch (changeType)
|
||||||
{
|
{
|
||||||
case MPOS_EXECUTE:
|
case MPOS_EXECUTE:
|
||||||
|
{
|
||||||
|
CMenuToolbarBase * tb = m_hotBar;
|
||||||
|
int item = m_hotItem;
|
||||||
|
tb->PrepareExecuteItem(item);
|
||||||
if (m_subMenuParent)
|
if (m_subMenuParent)
|
||||||
{
|
{
|
||||||
m_subMenuParent->OnSelect(changeType);
|
m_subMenuParent->OnSelect(changeType);
|
||||||
}
|
}
|
||||||
TRACE("Menu closed, executing item...\n");
|
TRACE("Menu closed, executing item...\n");
|
||||||
m_hotBar->ExecuteItem(m_hotItem);
|
tb->ExecuteItem();
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case MPOS_SELECTLEFT:
|
case MPOS_SELECTLEFT:
|
||||||
if (m_parentBand && m_parentBand->_IsPopup()==S_FALSE)
|
if (m_parentBand && m_parentBand->_IsPopup()==S_FALSE)
|
||||||
return m_parentBand->_MenuItemHotTrack(VK_LEFT);
|
return m_parentBand->_MenuItemHotTrack(VK_LEFT);
|
||||||
|
|
|
@ -846,16 +846,17 @@ HRESULT CMenuToolbarBase::MenuBarMouseUp(INT iIndex)
|
||||||
return ProcessClick(btn.idCommand);
|
return ProcessClick(btn.idCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT CMenuToolbarBase::ExecuteItem(INT iItem)
|
HRESULT CMenuToolbarBase::PrepareExecuteItem(INT iItem)
|
||||||
{
|
{
|
||||||
this->m_menuBand->_KillPopupTimers();
|
this->m_menuBand->_KillPopupTimers();
|
||||||
|
|
||||||
INT index;
|
m_executeItem = iItem;
|
||||||
DWORD_PTR data;
|
return GetDataFromId(iItem, &m_executeIndex, &m_executeData);
|
||||||
|
}
|
||||||
|
|
||||||
GetDataFromId(iItem, &index, &data);
|
HRESULT CMenuToolbarBase::ExecuteItem()
|
||||||
|
{
|
||||||
return InternalExecuteItem(iItem, index, data);
|
return InternalExecuteItem(m_executeItem, m_executeItem, m_executeData);
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT CMenuToolbarBase::OnContextMenu(NMMOUSE * rclick)
|
HRESULT CMenuToolbarBase::OnContextMenu(NMMOUSE * rclick)
|
||||||
|
|
|
@ -51,6 +51,10 @@ protected:
|
||||||
DWORD m_initFlags;
|
DWORD m_initFlags;
|
||||||
BOOL m_isTrackingPopup;
|
BOOL m_isTrackingPopup;
|
||||||
|
|
||||||
|
INT m_executeIndex;
|
||||||
|
INT m_executeItem;
|
||||||
|
DWORD_PTR m_executeData;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static LRESULT CALLBACK s_SubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
static LRESULT CALLBACK s_SubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
|
@ -77,7 +81,8 @@ public:
|
||||||
|
|
||||||
HRESULT KeyboardItemChange(DWORD changeType);
|
HRESULT KeyboardItemChange(DWORD changeType);
|
||||||
|
|
||||||
HRESULT ExecuteItem(INT iItem);
|
HRESULT PrepareExecuteItem(INT iItem);
|
||||||
|
HRESULT ExecuteItem();
|
||||||
|
|
||||||
HRESULT IsTrackedItem(INT index);
|
HRESULT IsTrackedItem(INT index);
|
||||||
HRESULT ChangeTrackedItem(INT index, BOOL wasTracking, BOOL mouse);
|
HRESULT ChangeTrackedItem(INT index, BOOL wasTracking, BOOL mouse);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue