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) [backport of r49916 from trunk]
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@49918 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -2191,6 +2191,38 @@ WXLRESULT wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPara
|
|||||||
}
|
}
|
||||||
break;
|
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:
|
case WM_MOUSEMOVE:
|
||||||
#ifndef __WXWINCE__
|
#ifndef __WXWINCE__
|
||||||
if ( m_htClickedItem )
|
if ( m_htClickedItem )
|
||||||
|
Reference in New Issue
Block a user