[SHELL32] CDefView: Improve the context menu positioning

Previously we would always show a menu on the focused item, but
this should only be done when it is also selected.
This commit is contained in:
Mark Jansen 2019-08-08 21:01:19 +02:00
parent 7464241ada
commit c96ba1aff2
No known key found for this signature in database
GPG key ID: B39240EE84BEAE8B

View file

@ -1443,15 +1443,19 @@ LRESULT CDefView::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &b
/* There is no position requested, so try to find one */
if (lParam == ~0)
{
int lvIndex;
HWND hFocus = ::GetFocus();
int lvIndex = -1;
POINT pt;
/* Do we have a focused item, */
if ((lvIndex = m_ListView.GetNextItem(-1, LVIS_FOCUSED)) < 0)
if (hFocus == m_ListView.m_hWnd || m_ListView.IsChild(hFocus))
{
/* or a selected item? */
lvIndex = m_ListView.GetNextItem(-1, LVIS_SELECTED);
/* Is there an item focused and selected? */
lvIndex = m_ListView.GetNextItem(-1, LVIS_SELECTED|LVIS_FOCUSED);
/* If not, find the first selected item */
if (lvIndex < 0)
lvIndex = m_ListView.GetNextItem(-1, LVIS_SELECTED);
}
/* We got something */
if (lvIndex > -1)
{