fixes to allow dragging in multiselection tree ctrl (patch 759421)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21865 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-07-10 13:03:30 +00:00
parent ae8c4b33a3
commit 35cf1ec63c
2 changed files with 73 additions and 16 deletions

View File

@@ -3076,6 +3076,21 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event )
}
else if ( event.LeftUp() )
{
// this facilitates multiple-item drag-and-drop
if (item && HasFlag(wxTR_MULTIPLE))
{
wxArrayTreeItemIds selections;
size_t count = GetSelections(selections);
if (count > 1 &&
!event.ControlDown() &&
!event.ShiftDown())
{
SelectItem(item, true, false);
}
}
if ( m_lastOnSame )
{
if ( (item == m_current) &&
@@ -3118,14 +3133,24 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event )
return;
}
// how should the selection work for this event?
bool is_multiple, extended_select, unselect_others;
EventFlagsToSelType(GetWindowStyleFlag(),
event.ShiftDown(),
event.ControlDown(),
is_multiple, extended_select, unselect_others);
SelectItem(item, unselect_others, extended_select);
// clear the previously selected items, if the
// user clicked outside of the present selection.
// otherwise, perform the deselection on mouse-up.
// this allows multiple drag and drop to work.
if (!IsSelected(item))
{
// how should the selection work for this event?
bool is_multiple, extended_select, unselect_others;
EventFlagsToSelType(GetWindowStyleFlag(),
event.ShiftDown(),
event.ControlDown(),
is_multiple, extended_select, unselect_others);
SelectItem(item, unselect_others, extended_select);
}
// For some reason, Windows isn't recognizing a left double-click,
// so we need to simulate it here. Allow 200 milliseconds for now.