EVT_MENU(LIST_SMALL_ICON_TEXT_VIEW, MyFrame::OnSmallIconTextView)
EVT_MENU(LIST_VIRTUAL_VIEW, MyFrame::OnVirtualView)
+ EVT_MENU(LIST_FOCUS_LAST, MyFrame::OnFocusLast)
EVT_MENU(LIST_TOGGLE_FIRST, MyFrame::OnToggleFirstSel)
EVT_MENU(LIST_DESELECT_ALL, MyFrame::OnDeselectAll)
EVT_MENU(LIST_SELECT_ALL, MyFrame::OnSelectAll)
menuView->Append(LIST_VIRTUAL_VIEW, _T("Virtual view\tF7"));
wxMenu *menuList = new wxMenu;
+ menuList->Append(LIST_FOCUS_LAST, _T("&Make last item current\tCtrl-L"));
menuList->Append(LIST_TOGGLE_FIRST, _T("&Toggle first item\tCtrl-T"));
menuList->Append(LIST_DESELECT_ALL, _T("&Deselect All\tCtrl-D"));
menuList->Append(LIST_SELECT_ALL, _T("S&elect All\tCtrl-A"));
dialog.ShowModal();
}
+void MyFrame::OnFocusLast(wxCommandEvent& WXUNUSED(event))
+{
+ long index = m_listCtrl->GetItemCount() - 1;
+ if ( index == -1 )
+ {
+ return;
+ }
+
+ m_listCtrl->SetItemState(index, wxLIST_STATE_FOCUSED, wxLIST_STATE_FOCUSED);
+ m_listCtrl->EnsureVisible(index);
+}
+
void MyFrame::OnToggleFirstSel(wxCommandEvent& WXUNUSED(event))
{
m_listCtrl->SetItemState(0, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
void OnSmallIconTextView(wxCommandEvent& event);
void OnVirtualView(wxCommandEvent& event);
+ void OnFocusLast(wxCommandEvent& event);
void OnToggleFirstSel(wxCommandEvent& event);
void OnDeselectAll(wxCommandEvent& event);
void OnSelectAll(wxCommandEvent& event);
LIST_TOGGLE_FIRST,
LIST_SHOW_COL_INFO,
LIST_SHOW_SEL_INFO,
+ LIST_FOCUS_LAST,
LIST_CTRL = 1000
};
_T("invalid list ctrl item index in SetItem") );
size_t oldCurrent = m_current;
- size_t item = (size_t)litem; // sdafe because of the check above
+ size_t item = (size_t)litem; // safe because of the check above
+ // do we need to change the focus?
if ( stateMask & wxLIST_STATE_FOCUSED )
{
if ( state & wxLIST_STATE_FOCUSED )
m_current = item;
OnFocusLine( m_current );
- if ( IsSingleSel() && (oldCurrent != (size_t)-1) )
+ if ( oldCurrent != (size_t)-1 )
{
- HighlightLine(oldCurrent, FALSE);
+ if ( IsSingleSel() )
+ {
+ HighlightLine(oldCurrent, FALSE);
+ }
+
RefreshLine(oldCurrent);
}
{
OnUnfocusLine( m_current );
m_current = (size_t)-1;
+
+ RefreshLine( oldCurrent );
}
}
}
+ // do we need to change the selection state?
if ( stateMask & wxLIST_STATE_SELECTED )
{
bool on = (state & wxLIST_STATE_SELECTED) != 0;