git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47175
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
image_x = 3 + ix + IMAGE_MARGIN_IN_REPORT_MODE;
}
}
image_x = 3 + ix + IMAGE_MARGIN_IN_REPORT_MODE;
}
}
wxRect rect;
rect.x = HEADER_OFFSET_X;
rect.y = GetLineY(line);
wxRect rect;
rect.x = HEADER_OFFSET_X;
rect.y = GetLineY(line);
wxRect label = GetLineLabelRect( current );
if (label.Contains( x, y ))
m_renameTimer->Start( 250, true );
wxRect label = GetLineLabelRect( current );
if (label.Contains( x, y ))
m_renameTimer->Start( 250, true );
}
else
m_renameTimer->Start( 250, true );
}
else
m_renameTimer->Start( 250, true );
else // !shift
{
// all previously selected items are unselected unless ctrl is held
else // !shift
{
// all previously selected items are unselected unless ctrl is held
- if ( !event.ControlDown() )
+ // in a multiselection control
+ if ( !event.ControlDown() || IsSingleSel() )
HighlightAll(false);
ChangeCurrent(newCurrent);
HighlightAll(false);
ChangeCurrent(newCurrent);
// refresh the old focus to remove it
RefreshLine( oldCurrent );
// refresh the old focus to remove it
RefreshLine( oldCurrent );
- if ( !event.ControlDown() )
- {
+ // in single selection mode we must always have a selected item
+ if ( !event.ControlDown() || IsSingleSel() )
HighlightLine( m_current, true );
HighlightLine( m_current, true );
}
RefreshLine( m_current );
}
RefreshLine( m_current );
case WXK_SPACE:
if ( IsSingleSel() )
{
case WXK_SPACE:
if ( IsSingleSel() )
{
- SendNotify( m_current, wxEVT_COMMAND_LIST_ITEM_ACTIVATED );
-
- if ( IsHighlighted(m_current) )
+ if ( event.ControlDown() )
+ {
+ ReverseHighlight(m_current);
+ }
+ else // normal space press
- // don't unselect the item in single selection mode
- break;
+ SendNotify( m_current, wxEVT_COMMAND_LIST_ITEM_ACTIVATED );
- //else: select it in ReverseHighlight() below if unselected
-
- ReverseHighlight(m_current);
+ else // multiple selection
+ {
+ ReverseHighlight(m_current);
+ }
// update our idea of which lines are shown when we redraw the window the
// next time
ResetVisibleLinesRange();
// update our idea of which lines are shown when we redraw the window the
// next time
ResetVisibleLinesRange();
if ( event.GetOrientation() == wxHORIZONTAL && HasHeader() )
{
wxGenericListCtrl* lc = GetListCtrl();
if ( event.GetOrientation() == wxHORIZONTAL && HasHeader() )
{
wxGenericListCtrl* lc = GetListCtrl();