[DEV] correction some internal memory leek

This commit is contained in:
2014-05-26 21:42:51 +02:00
parent 2157099f0a
commit 9b21e5c769
17 changed files with 74 additions and 62 deletions

View File

@@ -218,18 +218,21 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
}
}
void BufferView::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
ewol::widget::List::onObjectRemove(_removeObject);
for (int32_t iii=0; iii<m_list.size(); iii++) {
if (m_list[iii] == NULL) {
continue;
void BufferView::onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
ewol::widget::List::onObjectRemove(_object);
auto it(m_list.begin());
while (it != m_list.end()) {
if ( *it != nullptr
&& (*it)->m_buffer == _object) {
m_list.erase(it);
markToRedraw();
it = m_list.begin();
} else {
++it;
}
if (m_list[iii]->m_buffer != _removeObject) {
continue;
}
m_list.erase(m_list.begin()+iii);
markToRedraw();
return;
}
if (m_bufferManager == _object) {
m_bufferManager.reset();
}
}

View File

@@ -54,7 +54,7 @@ class BufferView : public ewol::widget::List {
~BufferView();
// Derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _object);
private:
bool m_openOrderMode; //!< true if the order is the opening order mode, otherwise, Alphabetic order
protected:

View File

@@ -133,18 +133,21 @@ MainWindows::MainWindows() {
m_bufferManager = appl::BufferManager::keep();
mySizerVert = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert));
mySizerVert->setName("plop 1111111");
setSubWidget(mySizerVert);
mySizerHori = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeHori));
mySizerHori->setName("plop 222222222");
mySizerVert->subWidgetAdd(mySizerHori);
myBufferView = ewol::object::makeShared(new BufferView());
myBufferView->setName("plop 3333333");
myBufferView->setExpand(bvec2(false,true));
myBufferView->setFill(bvec2(true,true));
mySizerHori->subWidgetAdd(myBufferView);
mySizerVert2 = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert));
mySizerHori->subWidgetAdd(mySizerVert2);
mySizerVert2->setName("plop 4444444");
// main buffer Area :
#if defined(__TARGET_OS__Android)
myTextView = ewol::object::makeShared(new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 16));
@@ -166,6 +169,7 @@ MainWindows::MainWindows() {
mySizerVert2->subWidgetAdd(mySearch);
mySizerHori = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeHori));
mySizerHori->setName("plop 555555");
mySizerVert->subWidgetAdd(mySizerHori);
myMenu = ewol::object::makeShared(new ewol::widget::Menu());

View File

@@ -162,15 +162,15 @@ void Search::onReceiveMessage(const ewol::object::Message& _msg) {
}
}
void Search::onObjectRemove(const ewol::object::Shared<ewol::Object> _removeObject) {
ewol::widget::Composer::onObjectRemove(_removeObject);
if (_removeObject == m_searchEntry) {
void Search::onObjectRemove(const ewol::object::Shared<ewol::Object> _object) {
ewol::widget::Composer::onObjectRemove(_object);
if (_object == m_searchEntry) {
m_searchEntry.reset();
}
if (_removeObject == m_replaceEntry) {
if (_object == m_replaceEntry) {
m_replaceEntry.reset();
}
if (_removeObject == m_viewerManager) {
if (_object == m_viewerManager) {
m_viewerManager.reset();
}
}