I copyed the table class from the demo and created a filter for it in a text editor that is a child of the table. It works fine, but when I close the application it turns out I'm leaking memory. I don't want to leak memory. Thanks!
Edit: Attatched the class
//variables declared earlier XmlElement* dataList; XmlElement* hiddenDemoDataList; std::vector<XmlElement*> demoDataToDelete; std::vector<XmlElement*> hiddenDemoDataListToDelete; void textEditorTextChanged(TextEditor& textEditorThatHasChanged) { forEachXmlChildElement(*dataList, dataListChild) { if (dataListChild != 0) { const String text(dataListChild->getStringAttribute(getAttributeNameForColumnId(2))); if (!(text.substring(0, textEditorThatHasChanged.getText().length()) == textEditorThatHasChanged.getText()) ) { if (!hiddenDemoDataList) { hiddenDemoDataList = new XmlElement((*dataListChild)); } else { hiddenDemoDataList->addChildElement(new XmlElement((*dataListChild))); } hiddenDataListSize++; numRows--; demoDataToDelete.push_back(dataListChild); } } } for (int i = 0; i < demoDataToDelete.size(); i++) { dataList->removeChildElement(demoDataToDelete[i], true); } demoDataToDelete.clear(); forEachXmlChildElement(*hiddenDemoDataList, hiddenDataListChild) { if (hiddenDataListChild != 0) { const String text(hiddenDataListChild->getStringAttribute(getAttributeNameForColumnId(2))); if ((text.substring(0, textEditorThatHasChanged.getText().length()) == textEditorThatHasChanged.getText())) { if (!dataList) { dataList = new XmlElement((*hiddenDataListChild)); } else { dataList->addChildElement(new XmlElement((*hiddenDataListChild))); } hiddenDataListSize--; numRows++; hiddenDemoDataListToDelete.push_back(hiddenDataListChild); } } } for (int i = 0; i < hiddenDemoDataListToDelete.size(); i++) { hiddenDemoDataList->removeChildElement(hiddenDemoDataListToDelete[i], true); } hiddenDemoDataListToDelete.clear(); DemoDataSorter sorter(getAttributeNameForColumnId(2), 1); dataList->sortChildElements(sorter); table.updateContent(); table.repaint(); }