+
+ // Set item state if user wants
+ if ( item.m_mask & wxLIST_MASK_STATE )
+ SetItemState( item.m_itemId, item.m_state, item.m_state );
+
+ if (InReportView())
+ {
+ // update the Max Width Cache if needed
+ int width = GetItemWidthWithImage(&item);
+
+ if (width > m_aColWidths.Item(item.m_col)->nMaxWidth)
+ m_aColWidths.Item(item.m_col)->nMaxWidth = width;
+ }
+ }
+
+ // update the item on screen
+ wxRect rectItem;
+ GetItemRect(id, rectItem);
+ RefreshRect(rectItem);
+}
+
+void wxListMainWindow::SetItemStateAll(long state, long stateMask)
+{
+ if ( IsEmpty() )
+ return;
+
+ // first deal with selection
+ if ( stateMask & wxLIST_STATE_SELECTED )
+ {
+ // set/clear select state
+ if ( IsVirtual() )
+ {
+ // optimized version for virtual listctrl.
+ m_selStore.SelectRange(0, GetItemCount() - 1, state == wxLIST_STATE_SELECTED);
+ Refresh();
+ }
+ else if ( state & wxLIST_STATE_SELECTED )
+ {
+ const long count = GetItemCount();
+ for( long i = 0; i < count; i++ )
+ {
+ SetItemState( i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED );
+ }
+
+ }
+ else
+ {
+ // clear for non virtual (somewhat optimized by using GetNextItem())
+ long i = -1;
+ while ( (i = GetNextItem(i, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED)) != -1 )
+ {
+ SetItemState( i, 0, wxLIST_STATE_SELECTED );
+ }
+ }