]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/selstore.cpp
no real changes, just refactor to remove some code duplication in wxToolBarTool
[wxWidgets.git] / src / generic / selstore.cpp
index dfd54ae7011c74c57fc862cd3831882ff0fa3249..4333aeaeaac99d1d5ec53c96d34f21725aa93c44 100644 (file)
@@ -33,7 +33,7 @@
 // tests
 // ----------------------------------------------------------------------------
 
-bool wxSelectionStore::IsSelected(size_t item) const
+bool wxSelectionStore::IsSelected(unsigned item) const
 {
     bool isSel = m_itemsSel.Index(item) != wxNOT_FOUND;
 
@@ -46,7 +46,7 @@ bool wxSelectionStore::IsSelected(size_t item) const
 // Select*()
 // ----------------------------------------------------------------------------
 
-bool wxSelectionStore::SelectItem(size_t item, bool select)
+bool wxSelectionStore::SelectItem(unsigned item, bool select)
 {
     // search for the item ourselves as like this we get the index where to
     // insert it later if needed, so we do only one search in the array instead
@@ -60,7 +60,7 @@ bool wxSelectionStore::SelectItem(size_t item, bool select)
         {
             m_itemsSel.AddAt(item, index);
 
-            return TRUE;
+            return true;
         }
     }
     else // reset to default state
@@ -68,21 +68,21 @@ bool wxSelectionStore::SelectItem(size_t item, bool select)
         if ( isSel )
         {
             m_itemsSel.RemoveAt(index);
-            return TRUE;
+            return true;
         }
     }
 
-    return FALSE;
+    return false;
 }
 
-bool wxSelectionStore::SelectRange(size_t itemFrom, size_t itemTo,
+bool wxSelectionStore::SelectRange(unsigned itemFrom, unsigned itemTo,
                                    bool select,
                                    wxArrayInt *itemsChanged)
 {
     // 100 is hardcoded but it shouldn't matter much: the important thing is
     // that we don't refresh everything when really few (e.g. 1 or 2) items
     // change state
-    static const size_t MANY_ITEMS = 100;
+    static const unsigned MANY_ITEMS = 100;
 
     wxASSERT_MSG( itemFrom <= itemTo, _T("should be in order") );
 
@@ -102,7 +102,7 @@ bool wxSelectionStore::SelectRange(size_t itemFrom, size_t itemTo,
             // TODO: it should be possible to optimize the searches a bit
             //       knowing the possible range
 
-            size_t item;
+            unsigned item;
             for ( item = 0; item < itemFrom; item++ )
             {
                 if ( selOld.Index(item) == wxNOT_FOUND )
@@ -166,7 +166,7 @@ bool wxSelectionStore::SelectRange(size_t itemFrom, size_t itemTo,
         }
 
         // just add the items to the selection
-        for ( size_t item = itemFrom; item <= itemTo; item++ )
+        for ( unsigned item = itemFrom; item <= itemTo; item++ )
         {
             if ( SelectItem(item, select) && itemsChanged )
             {
@@ -191,7 +191,7 @@ bool wxSelectionStore::SelectRange(size_t itemFrom, size_t itemTo,
 // callbacks
 // ----------------------------------------------------------------------------
 
-void wxSelectionStore::OnItemDelete(size_t item)
+void wxSelectionStore::OnItemDelete(unsigned item)
 {
     size_t count = m_itemsSel.GetCount(),
            i = m_itemsSel.IndexForInsert(item);
@@ -214,3 +214,19 @@ void wxSelectionStore::OnItemDelete(size_t item)
     }
 }
 
+void wxSelectionStore::SetItemCount(unsigned count)
+{
+    // forget about all items whose indices are now invalid if the size
+    // decreased
+    if ( count < m_count )
+    {
+        for ( size_t i = m_itemsSel.GetCount(); i > 0; i-- )
+        {
+            if ( m_itemsSel[i - 1] >= count )
+                m_itemsSel.RemoveAt(i - 1);
+        }
+    }
+
+    // remember the new number of items
+    m_count = count;
+}