unselect all selected items, not just the currently focused one, when the mouse is right clicked outside of selection to minimize user confusion (patch 1702201, bug 1676471)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49916 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
57b10cb4eb
commit
e0bf68d697
@ -2147,6 +2147,38 @@ WXLRESULT wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_RBUTTONDOWN:
|
||||
// default handler removes the highlight from the currently
|
||||
// focused item when right mouse button is pressed on another
|
||||
// one but keeps the remaining items highlighted, which is
|
||||
// confusing, so override this default behaviour for tree with
|
||||
// multiple selections
|
||||
if ( isMultiple )
|
||||
{
|
||||
if ( !IsItemSelected(GetHwnd(), htItem) )
|
||||
{
|
||||
UnselectAll();
|
||||
SelectItem(htItem);
|
||||
::SetFocus(GetHwnd(), htItem);
|
||||
}
|
||||
|
||||
// fire EVT_RIGHT_DOWN
|
||||
HandleMouseEvent(nMsg, x, y, wParam);
|
||||
|
||||
// send NM_RCLICK
|
||||
NMHDR nmhdr;
|
||||
nmhdr.hwndFrom = GetHwnd();
|
||||
nmhdr.idFrom = ::GetWindowLong(GetHwnd(), GWL_ID);
|
||||
nmhdr.code = NM_RCLICK;
|
||||
::SendMessage(::GetParent(GetHwnd()), WM_NOTIFY,
|
||||
nmhdr.idFrom, (LPARAM)&nmhdr);
|
||||
|
||||
// prevent tree control default processing, as we've
|
||||
// already done everything
|
||||
processed = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
#ifndef __WXWINCE__
|
||||
if ( m_htClickedItem )
|
||||
|
Loading…
Reference in New Issue
Block a user