[DEV] seem to work, but the result is really bad ...
This commit is contained in:
parent
3c52398511
commit
c2eb3c1467
@ -387,12 +387,17 @@ ewol::Context::~Context() {
|
|||||||
do {
|
do {
|
||||||
m_objectManager.removeAllRemovedObject();
|
m_objectManager.removeAllRemovedObject();
|
||||||
} while (m_resourceManager.checkResourceToRemove() == true);
|
} while (m_resourceManager.checkResourceToRemove() == true);
|
||||||
m_objectManager.displayListObject();
|
|
||||||
// call application to uninit
|
// call application to uninit
|
||||||
APP_UnInit(*this);
|
APP_UnInit(*this);
|
||||||
// unset all windows
|
// clean all messages
|
||||||
m_msgSystem.clean();
|
m_msgSystem.clean();
|
||||||
|
// an other cycle of removing ...
|
||||||
|
do {
|
||||||
|
m_objectManager.removeAllRemovedObject();
|
||||||
|
} while (m_resourceManager.checkResourceToRemove() == true);
|
||||||
|
|
||||||
|
EWOL_INFO("List of all widget of this context must be equal at 0 ==> otherwise some remove is missing");
|
||||||
|
m_objectManager.displayListObject();
|
||||||
// Resource is an lower element as objects ...
|
// Resource is an lower element as objects ...
|
||||||
m_resourceManager.unInit();
|
m_resourceManager.unInit();
|
||||||
// now All must be removed !!!
|
// now All must be removed !!!
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <ewol/object/Manager.h>
|
#include <ewol/object/Manager.h>
|
||||||
#include <ewol/context/Context.h>
|
#include <ewol/context/Context.h>
|
||||||
#include <ewol/ewol.h>
|
#include <ewol/ewol.h>
|
||||||
|
#include <etk/stdTools.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#undef __class__
|
#undef __class__
|
||||||
@ -36,8 +37,9 @@ ewol::object::Manager::~Manager() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ewol::object::Manager::displayListObject() {
|
void ewol::object::Manager::displayListObject() {
|
||||||
|
EWOL_INFO("List loaded object : ");
|
||||||
for (auto &it : m_eObjectList) {
|
for (auto &it : m_eObjectList) {
|
||||||
EWOL_ERROR("List object : " << it->getName() << " : " << it->getTypeDescription() << " nb ref=" << it->getRefCount());
|
EWOL_INFO(" Ref=" << it->getRefCount() << " remove=" << it->isDestroyed() << " name='" << it->getName() << "' type=" << it->getObjectType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,9 +56,11 @@ void ewol::object::Manager::unInit() {
|
|||||||
if (m_eObjectListActive.size() != 0) {
|
if (m_eObjectListActive.size() != 0) {
|
||||||
EWOL_ERROR("Have " << m_eObjectListActive.size() << " active Object");
|
EWOL_ERROR("Have " << m_eObjectListActive.size() << " active Object");
|
||||||
}
|
}
|
||||||
|
m_multiCast.clear();
|
||||||
m_eObjectListActive.clear();
|
m_eObjectListActive.clear();
|
||||||
m_eObjectList.clear();
|
m_eObjectList.clear();
|
||||||
removeAllRemovedObject();
|
removeAllRemovedObject();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ewol::object::Manager::add(const ewol::object::Shared<ewol::Object>& _object) {
|
void ewol::object::Manager::add(const ewol::object::Shared<ewol::Object>& _object) {
|
||||||
@ -75,12 +79,13 @@ void ewol::object::Manager::informOneObjectIsRemoved(const ewol::object::Shared<
|
|||||||
for (auto &it : m_eObjectList) {
|
for (auto &it : m_eObjectList) {
|
||||||
if ( it != nullptr
|
if ( it != nullptr
|
||||||
&& it != _object) {
|
&& it != _object) {
|
||||||
EWOL_VERBOSE("[" << _object->getId() << "] Inform remove Element : " << it->getId() << " type : " << it->getTypeDescription());
|
EWOL_VERBOSE("[" << _object->getId() << "] onObjectRemove() : " << it->getId() << " type=" << it->getObjectType() << " name='" << it->getName() << "'");
|
||||||
it->onObjectRemove(_object);
|
it->onObjectRemove(_object);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// inform context that n object is removed ...
|
// inform context that n object is removed ...
|
||||||
m_context.onObjectRemove(_object);
|
m_context.onObjectRemove(_object);
|
||||||
|
m_multiCast.onObjectRemove(_object);
|
||||||
EWOL_VERBOSE("m_removeEventList.size() = " << m_removeEventList.size());
|
EWOL_VERBOSE("m_removeEventList.size() = " << m_removeEventList.size());
|
||||||
for (auto &it : m_removeEventList) {
|
for (auto &it : m_removeEventList) {
|
||||||
EWOL_VERBOSE("[" << _object->getId() << "] Inform Event Remove Object List : ...");
|
EWOL_VERBOSE("[" << _object->getId() << "] Inform Event Remove Object List : ...");
|
||||||
@ -107,15 +112,18 @@ void ewol::object::Manager::remove(const ewol::object::Shared<ewol::Object>& _ob
|
|||||||
EWOL_ERROR("Try to Auto-Remove (nullptr) Object");
|
EWOL_ERROR("Try to Auto-Remove (nullptr) Object");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int64_t iii = (int64_t)m_eObjectListActive.size()-1; iii>=0; --iii) {
|
auto it(m_eObjectListActive.begin());
|
||||||
if (m_eObjectListActive[iii] == _object) {
|
while (it != m_eObjectListActive.end()) {
|
||||||
|
if (*it == _object) {
|
||||||
|
m_eObjectListActive.erase(it);
|
||||||
// remove Element
|
// remove Element
|
||||||
EWOL_DEBUG("Auto-Remove Object : [" << _object->getId() << "] type='" << _object->getObjectType() << "'");
|
EWOL_DEBUG("Auto-Remove Object : [" << _object->getId() << "] type='" << _object->getObjectType() << "' name=" << _object->getName());
|
||||||
informOneObjectIsRemoved(_object);
|
informOneObjectIsRemoved(_object);
|
||||||
ewol::getContext().forceRedrawAll();
|
ewol::getContext().forceRedrawAll();
|
||||||
EWOL_DEBUG("Auto-Remove Object ... done (have " << _object->getRefCount() << " references)");
|
EWOL_DEBUG("Auto-Remove Object ... done (have " << _object->getRefCount() << " references)");
|
||||||
m_eObjectListActive.erase(m_eObjectListActive.begin()+iii);
|
it = m_eObjectListActive.begin();
|
||||||
return;
|
} else {
|
||||||
|
++it;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EWOL_ERROR("Try to Auto-Remove Object that is not referenced ...");
|
EWOL_ERROR("Try to Auto-Remove Object that is not referenced ...");
|
||||||
@ -124,20 +132,15 @@ void ewol::object::Manager::remove(const ewol::object::Shared<ewol::Object>& _ob
|
|||||||
// clean all Object that request an autoRemove ...
|
// clean all Object that request an autoRemove ...
|
||||||
void ewol::object::Manager::removeAllRemovedObject() {
|
void ewol::object::Manager::removeAllRemovedObject() {
|
||||||
EWOL_VERBOSE("Clean Object List (if needed) : " << m_eObjectListActive.size() << "/" << m_eObjectList.size() << " elemeents");
|
EWOL_VERBOSE("Clean Object List (if needed) : " << m_eObjectListActive.size() << "/" << m_eObjectList.size() << " elemeents");
|
||||||
bool haveRemoveElement = true;
|
auto it(m_eObjectList.begin());
|
||||||
while (haveRemoveElement == true) {
|
while (it != m_eObjectList.end()) {
|
||||||
haveRemoveElement = false;
|
if ( *it != nullptr
|
||||||
for (int64_t iii = (int64_t)m_eObjectList.size()-1; iii>=0; --iii) {
|
&& (*it)->getRefCount() <= 1) {
|
||||||
if (m_eObjectList[iii] == nullptr) {
|
EWOL_DEBUG("remove definitly : [" << (*it)->getId() << "] type='" << (*it)->getObjectType() << "'");
|
||||||
continue;
|
m_eObjectList.erase(it);
|
||||||
}
|
it = m_eObjectList.begin();
|
||||||
if (m_eObjectList[iii]->getRefCount() > 1) {
|
} else {
|
||||||
continue;
|
++it;
|
||||||
}
|
|
||||||
EWOL_DEBUG("remove definitly : [" << m_eObjectList[iii]->getId() << "] type='" << m_eObjectList[iii]->getObjectType() << "'");
|
|
||||||
m_eObjectList.erase(m_eObjectList.begin() + iii);
|
|
||||||
haveRemoveElement = true;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -146,11 +149,10 @@ ewol::object::Shared<ewol::Object> ewol::object::Manager::get(const std::string&
|
|||||||
if (_name == "") {
|
if (_name == "") {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
for (size_t iii=0; iii<m_eObjectList.size(); iii++) {
|
for (auto &it : m_eObjectList) {
|
||||||
if (m_eObjectList[iii] != nullptr) {
|
if ( it != nullptr
|
||||||
if (m_eObjectList[iii]->getName() == _name) {
|
&& it->getName() == _name) {
|
||||||
return m_eObjectList[iii];
|
return it;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -23,6 +23,22 @@ ewol::object::MultiCast::~MultiCast() {
|
|||||||
m_messageList.clear();
|
m_messageList.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ewol::object::MultiCast::clear() {
|
||||||
|
EWOL_INFO("EObject message Multi-Cast");
|
||||||
|
m_messageList.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ewol::object::MultiCast::onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
|
||||||
|
auto it(m_messageList.begin());
|
||||||
|
while (it != m_messageList.end()) {
|
||||||
|
if (it->m_object == _object) {
|
||||||
|
m_messageList.erase(it);
|
||||||
|
it = m_messageList.begin();
|
||||||
|
} else {
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ewol::object::MultiCast::add(const ewol::object::Shared<ewol::Object>& _object, const char* const _message) {
|
void ewol::object::MultiCast::add(const ewol::object::Shared<ewol::Object>& _object, const char* const _message) {
|
||||||
if (nullptr == _object) {
|
if (nullptr == _object) {
|
||||||
@ -44,12 +60,14 @@ void ewol::object::MultiCast::rm(const ewol::object::Shared<ewol::Object>& _obje
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// send the message at all registered widget ...
|
// send the message at all registered widget ...
|
||||||
for (int32_t iii=m_messageList.size()-1; iii >= 0; iii--) {
|
auto it(m_messageList.begin());
|
||||||
if(m_messageList[iii].m_object == _object) {
|
while (it != m_messageList.end()) {
|
||||||
|
if(it->m_object == _object) {
|
||||||
EWOL_DEBUG("SendMulticast RM listener :" << _object->getId());
|
EWOL_DEBUG("SendMulticast RM listener :" << _object->getId());
|
||||||
m_messageList[iii].m_message = nullptr;
|
m_messageList.erase(it);
|
||||||
m_messageList[iii].m_object = nullptr;
|
it = m_messageList.begin();
|
||||||
m_messageList.erase(m_messageList.begin()+iii);
|
} else {
|
||||||
|
++it;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,15 +76,14 @@ void ewol::object::MultiCast::send(const ewol::object::Shared<ewol::Object>& _ob
|
|||||||
EWOL_VERBOSE("SendMulticast message \"" << _message << "\" data=\"" << _data << "\" to :");
|
EWOL_VERBOSE("SendMulticast message \"" << _message << "\" data=\"" << _data << "\" to :");
|
||||||
|
|
||||||
// send the message at all registered widget ...
|
// send the message at all registered widget ...
|
||||||
for (size_t iii=0; iii<m_messageList.size(); iii++) {
|
for (auto &it : m_messageList) {
|
||||||
if( m_messageList[iii].m_message == _message
|
if( it.m_message == _message
|
||||||
&& m_messageList[iii].m_object != _object)
|
&& it.m_object != _object) {
|
||||||
{
|
if (it.m_object != nullptr) {
|
||||||
if (nullptr != m_messageList[iii].m_object) {
|
EWOL_VERBOSE(" id = " << it.m_object->getId() << " type=" << it.m_object->getObjectType());
|
||||||
EWOL_VERBOSE(" id = " << m_messageList[iii].m_object->getId() << " type=" << m_messageList[iii].m_object->getObjectType());
|
|
||||||
// generate event ... (create message before ...
|
// generate event ... (create message before ...
|
||||||
ewol::object::Message tmpMsg(_object, m_messageList[iii].m_message, _data);
|
ewol::object::Message tmpMsg(_object, it.m_message, _data);
|
||||||
m_messageList[iii].m_object->onReceiveMessage(tmpMsg);
|
it.m_object->onReceiveMessage(tmpMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,12 +33,14 @@ namespace ewol {
|
|||||||
public:
|
public:
|
||||||
MultiCast();
|
MultiCast();
|
||||||
~MultiCast();
|
~MultiCast();
|
||||||
|
void clear();
|
||||||
void anonymousSend(const char* const _messageId, const std::string& _data) {
|
void anonymousSend(const char* const _messageId, const std::string& _data) {
|
||||||
send(nullptr, _messageId, _data);
|
send(nullptr, _messageId, _data);
|
||||||
};
|
};
|
||||||
void send(const ewol::object::Shared<ewol::Object>& _object, const char* const _message, const std::string& _data);
|
void send(const ewol::object::Shared<ewol::Object>& _object, const char* const _message, const std::string& _data);
|
||||||
void rm(const ewol::object::Shared<ewol::Object>& _object);
|
void rm(const ewol::object::Shared<ewol::Object>& _object);
|
||||||
void add(const ewol::object::Shared<ewol::Object>& _object, const char* const _message);
|
void add(const ewol::object::Shared<ewol::Object>& _object, const char* const _message);
|
||||||
|
void onObjectRemove(const ewol::object::Shared<ewol::Object>& _object);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -61,7 +61,7 @@ void ewol::Object::operator delete[](void* _ptr, std::size_t _sz) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ewol::Object::autoDestroy() {
|
void ewol::Object::autoDestroy() {
|
||||||
EWOL_VERBOSE("Destroy object : [" << getId() << "] type:" << getTypeDescription());
|
EWOL_VERBOSE("Destroy object : [" << getId() << "] type:" << getObjectType());
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(m_lockRefCount);
|
std::unique_lock<std::mutex> lock(m_lockRefCount);
|
||||||
if (m_isDestroyed == true) {
|
if (m_isDestroyed == true) {
|
||||||
|
@ -100,11 +100,17 @@ namespace ewol {
|
|||||||
* @brief Asynchronous removing the object
|
* @brief Asynchronous removing the object
|
||||||
*/
|
*/
|
||||||
void removeObject();
|
void removeObject();
|
||||||
public:
|
|
||||||
/**
|
/**
|
||||||
* @brief Respown a removed object
|
* @brief Respown a removed object
|
||||||
*/
|
*/
|
||||||
void respownObject();
|
void respownObject();
|
||||||
|
/**
|
||||||
|
* @brief Get if the element is destroyed or not
|
||||||
|
* @return true The element in destroyed
|
||||||
|
*/
|
||||||
|
bool isDestroyed() {
|
||||||
|
return m_isDestroyed;
|
||||||
|
}
|
||||||
private:
|
private:
|
||||||
std::vector<const char*> m_listType;
|
std::vector<const char*> m_listType;
|
||||||
public:
|
public:
|
||||||
|
@ -40,13 +40,15 @@ void ewol::resource::Manager::unInit() {
|
|||||||
display();
|
display();
|
||||||
m_resourceListToUpdate.clear();
|
m_resourceListToUpdate.clear();
|
||||||
// remove all resources ...
|
// remove all resources ...
|
||||||
for (auto &it : m_resourceList) {
|
auto it(m_resourceList.begin());
|
||||||
if (it != nullptr) {
|
while(it != m_resourceList.end()) {
|
||||||
EWOL_WARNING("Find a resource that is not removed : [" << it->getId() << "]"
|
if ((*it) != nullptr) {
|
||||||
<< "=\"" << it->getName() << "\" "
|
EWOL_WARNING("Find a resource that is not removed : [" << (*it)->getId() << "]"
|
||||||
<< it->getRefCount() << " elements");
|
<< "=\"" << (*it)->getName() << "\" "
|
||||||
it.reset();
|
<< (*it)->getRefCount() << " elements");
|
||||||
}
|
}
|
||||||
|
m_resourceList.erase(it);
|
||||||
|
it = m_resourceList.begin();
|
||||||
}
|
}
|
||||||
m_resourceList.clear();
|
m_resourceList.clear();
|
||||||
}
|
}
|
||||||
|
@ -71,8 +71,9 @@ ewol::object::Shared<ewol::Widget> ewol::widget::Container::getWidgetNamed(const
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ewol::widget::Container::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
|
void ewol::widget::Container::onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
|
||||||
if (m_subWidget == _removeObject) {
|
ewol::Widget::onObjectRemove(_object);
|
||||||
|
if (m_subWidget == _object) {
|
||||||
m_subWidget.reset();
|
m_subWidget.reset();
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
requestUpdateSize();
|
requestUpdateSize();
|
||||||
|
@ -54,7 +54,7 @@ namespace ewol {
|
|||||||
public: // Derived function
|
public: // Derived function
|
||||||
virtual void systemDraw(const ewol::DrawProperty& _displayProp);
|
virtual void systemDraw(const ewol::DrawProperty& _displayProp);
|
||||||
virtual void onRegenerateDisplay();
|
virtual void onRegenerateDisplay();
|
||||||
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
|
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _object);
|
||||||
virtual void calculateSize(const vec2& _availlable);
|
virtual void calculateSize(const vec2& _availlable);
|
||||||
virtual void calculateMinMaxSize();
|
virtual void calculateMinMaxSize();
|
||||||
virtual ewol::object::Shared<ewol::Widget> getWidgetAtPos(const vec2& _pos);
|
virtual ewol::object::Shared<ewol::Widget> getWidgetAtPos(const vec2& _pos);
|
||||||
|
@ -73,13 +73,14 @@ ewol::object::Shared<ewol::Widget> ewol::widget::Container2::getWidgetNamed(cons
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ewol::widget::Container2::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
|
void ewol::widget::Container2::onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
|
||||||
if (m_subWidget[0] == _removeObject) {
|
ewol::Widget::onObjectRemove(_object);
|
||||||
|
if (m_subWidget[0] == _object) {
|
||||||
m_subWidget[0].reset();
|
m_subWidget[0].reset();
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
requestUpdateSize();
|
requestUpdateSize();
|
||||||
}
|
}
|
||||||
if (m_subWidget[1] == _removeObject) {
|
if (m_subWidget[1] == _object) {
|
||||||
m_subWidget[1].reset();
|
m_subWidget[1].reset();
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
requestUpdateSize();
|
requestUpdateSize();
|
||||||
|
@ -152,7 +152,7 @@ namespace ewol {
|
|||||||
public: // Derived function
|
public: // Derived function
|
||||||
virtual void systemDraw(const ewol::DrawProperty& _displayProp);
|
virtual void systemDraw(const ewol::DrawProperty& _displayProp);
|
||||||
virtual void onRegenerateDisplay();
|
virtual void onRegenerateDisplay();
|
||||||
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
|
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _object);
|
||||||
virtual void calculateSize(const vec2& _availlable) {
|
virtual void calculateSize(const vec2& _availlable) {
|
||||||
calculateSizePadded(_availlable);
|
calculateSizePadded(_availlable);
|
||||||
}
|
}
|
||||||
|
@ -142,13 +142,17 @@ ewol::object::Shared<ewol::Widget> ewol::widget::ContainerN::getWidgetNamed(cons
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ewol::widget::ContainerN::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
|
void ewol::widget::ContainerN::onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
|
||||||
// First step call parrent :
|
// First step call parrent :
|
||||||
ewol::Widget::onObjectRemove(_removeObject);
|
ewol::Widget::onObjectRemove(_object);
|
||||||
// second step find if in all the elements ...
|
// second step find if in all the elements ...
|
||||||
for (auto it(m_subWidget.begin()) ; it != m_subWidget.end() ; ++it) {
|
auto it(m_subWidget.begin());
|
||||||
if(*it == _removeObject) {
|
while (it != m_subWidget.end()) {
|
||||||
|
if(*it == _object) {
|
||||||
m_subWidget.erase(it);
|
m_subWidget.erase(it);
|
||||||
|
it = m_subWidget.begin();
|
||||||
|
} else {
|
||||||
|
++it;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ namespace ewol {
|
|||||||
public:// Derived function
|
public:// Derived function
|
||||||
virtual void systemDraw(const ewol::DrawProperty& _displayProp);
|
virtual void systemDraw(const ewol::DrawProperty& _displayProp);
|
||||||
virtual void onRegenerateDisplay();
|
virtual void onRegenerateDisplay();
|
||||||
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
|
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _object);
|
||||||
virtual void calculateSize(const vec2& _availlable);
|
virtual void calculateSize(const vec2& _availlable);
|
||||||
virtual void calculateMinMaxSize();
|
virtual void calculateMinMaxSize();
|
||||||
virtual ewol::object::Shared<ewol::Widget> getWidgetAtPos(const vec2& _pos);
|
virtual ewol::object::Shared<ewol::Widget> getWidgetAtPos(const vec2& _pos);
|
||||||
|
@ -366,6 +366,6 @@ void ewol::widget::Gird::onObjectRemove(const ewol::object::Shared<ewol::Object>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_tmpWidget == _removeObject) {
|
if (m_tmpWidget == _removeObject) {
|
||||||
m_tmpWidget = nullptr;
|
m_tmpWidget.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user