extras/CheckListBox: Overriding DeleteRow() method to handle destroying checkboxes
authorJerome St-Louis <jerome@ecere.com>
Wed, 21 Dec 2016 03:53:13 +0000 (22:53 -0500)
committerJerome St-Louis <jerome@ecere.com>
Wed, 21 Dec 2016 05:51:23 +0000 (00:51 -0500)
extras/gui/controls/CheckListBox.ec

index b6bfb27..8068e29 100644 (file)
@@ -99,6 +99,23 @@ class CheckListBox : ListBox
       return false;
    }
 
+   public void DeleteRow(DataRow row)
+   {
+      MapIterator<uintptr, CheckListBoxButton> it { map = buttonMaps };
+      NotifyCollapse(master, this, row, true);
+
+      if(it.Index((uintptr)row, false))
+      {
+         CheckListBoxButton button = it.data;
+         if(button)
+         {
+            button.Destroy(0);
+            it.Remove();
+         }
+      }
+      ListBox::DeleteRow(row);
+   }
+
    void SetupButtons(DataRow row, bool recurse)
    {
       DataRow parent;