[DEV] run with no error ==> have many small error that thing not work compleately
This commit is contained in:
parent
e3305c3757
commit
4b8c98c110
@ -388,18 +388,15 @@ ewol::Context::~Context() {
|
||||
// Remove current windows
|
||||
m_windowsCurrent.reset();
|
||||
// clean all widget and sub widget with their resources:
|
||||
do {
|
||||
m_objectManager.removeAllRemovedObject();
|
||||
} while (m_resourceManager.checkResourceToRemove() == true);
|
||||
m_objectManager.cleanInternalRemoved();
|
||||
// call application to uninit
|
||||
m_application->unInit(*this);
|
||||
m_application.reset();
|
||||
// clean all messages
|
||||
m_msgSystem.clean();
|
||||
// an other cycle of removing ...
|
||||
do {
|
||||
m_objectManager.removeAllRemovedObject();
|
||||
} while (m_resourceManager.checkResourceToRemove() == true);
|
||||
// internal clean elements
|
||||
m_objectManager.cleanInternalRemoved();
|
||||
m_resourceManager.cleanInternalRemoved();
|
||||
|
||||
EWOL_INFO("List of all widget of this context must be equal at 0 ==> otherwise some remove is missing");
|
||||
m_objectManager.displayListObject();
|
||||
@ -667,9 +664,8 @@ bool ewol::Context::OS_Draw(bool _displayEveryTime) {
|
||||
m_resourceManager.updateContext();
|
||||
// release open GL Context
|
||||
ewol::openGL::unLock();
|
||||
do {
|
||||
m_objectManager.removeAllRemovedObject();
|
||||
} while (m_resourceManager.checkResourceToRemove() == true);
|
||||
m_objectManager.cleanInternalRemoved();
|
||||
m_resourceManager.cleanInternalRemoved();
|
||||
// release the curent interface :
|
||||
unLockContext();
|
||||
}
|
||||
@ -683,8 +679,7 @@ void ewol::Context::onObjectRemove(const std::shared_ptr<ewol::Object>& _object)
|
||||
}
|
||||
// inform all manager that can not be directly linked with the object manager
|
||||
m_input.onObjectRemove(_object);
|
||||
m_widgetManager.onObjectRemove(_object);
|
||||
m_resourceManager.checkResourceToRemove();
|
||||
m_resourceManager.cleanInternalRemoved();
|
||||
}
|
||||
|
||||
void ewol::Context::resetIOEvent() {
|
||||
|
@ -37,7 +37,7 @@ void ewol::object::Manager::displayListObject() {
|
||||
for (auto &it : m_eObjectList) {
|
||||
std::shared_ptr<ewol::Object> element = it.lock();
|
||||
if (element != nullptr) {
|
||||
EWOL_INFO(" name='" << element->getName() << "' type=" << element->getObjectType());
|
||||
EWOL_INFO(" [" << element->getId() << "] ref=" << element.use_count()-1 << " name='" << element->getName() << "' type=" << element->getObjectType());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -68,65 +68,8 @@ int32_t ewol::object::Manager::getNumberObject() {
|
||||
return m_eObjectList.size();
|
||||
}
|
||||
|
||||
void ewol::object::Manager::informOneObjectIsRemoved(const std::shared_ptr<ewol::Object>& _object) {
|
||||
EWOL_TODO("ewol::object::Manager::informOneObjectIsRemoved()");
|
||||
/*
|
||||
for (auto &it : m_eObjectList) {
|
||||
std::shared_ptr<ewol::Object> element = it.lock();
|
||||
if ( element != nullptr
|
||||
&& element != _object) {
|
||||
EWOL_VERBOSE("[" << _object->getId() << "] onObjectRemove() : " << element->getId() << " type=" << element->getObjectType() << " name='" << element->getName() << "'");
|
||||
element->onObjectRemove(_object);
|
||||
}
|
||||
}
|
||||
// inform context that n object is removed ...
|
||||
m_context.onObjectRemove(_object);
|
||||
m_multiCast.onObjectRemove(_object);
|
||||
EWOL_VERBOSE("m_removeEventList.size() = " << m_removeEventList.size());
|
||||
for (auto &it : m_removeEventList) {
|
||||
EWOL_VERBOSE("[" << _object->getId() << "] Inform Event Remove Object List : ...");
|
||||
std::shared_ptr<ewol::Object> element = it.lock();
|
||||
if (element != nullptr) {
|
||||
element->onObjectRemove(_object);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void ewol::object::Manager::remove(const std::shared_ptr<ewol::Object>& _object) {
|
||||
EWOL_TODO("ewol::object::Manager::remove()");
|
||||
/*
|
||||
if (_object == nullptr) {
|
||||
EWOL_ERROR("Try to Auto-Remove (nullptr) Object");
|
||||
return;
|
||||
}
|
||||
int32_t count = 0;
|
||||
auto it(m_eObjectListActive.begin());
|
||||
while (it != m_eObjectListActive.end()) {
|
||||
if (*it == _object) {
|
||||
m_eObjectListActive.erase(it);
|
||||
// remove Element
|
||||
EWOL_DEBUG("Auto-Remove Object : [" << _object->getId() << "] type='" << _object->getObjectType() << "' name=" << _object->getName());
|
||||
informOneObjectIsRemoved(_object);
|
||||
ewol::getContext().forceRedrawAll();
|
||||
EWOL_VERBOSE("Auto-Remove Object ... done (have " << _object->getRefCount() << " references)");
|
||||
it = m_eObjectListActive.begin();
|
||||
count++;
|
||||
} else {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
if (count == 0) {
|
||||
EWOL_ERROR("Try to Auto-Remove Object that is not referenced ...");
|
||||
} else if ( count>1
|
||||
|| count<0) {
|
||||
EWOL_ERROR("Remove more than one object in the system list ==> this is a real problem ...");
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
// clean all Object that request an autoRemove ...
|
||||
void ewol::object::Manager::removeAllRemovedObject() {
|
||||
void ewol::object::Manager::cleanInternalRemoved() {
|
||||
size_t nbObject = m_eObjectList.size();
|
||||
EWOL_VERBOSE("Clean Object List (if needed) : " << m_eObjectList.size() << " elements");
|
||||
auto it(m_eObjectList.begin());
|
||||
|
@ -43,17 +43,10 @@ namespace ewol {
|
||||
* @param[in] _object Reference shared pointer on the object
|
||||
*/
|
||||
void add(const std::shared_ptr<ewol::Object>& _object);
|
||||
/**
|
||||
* @brief Called when an object request to be removed
|
||||
* @param[in] _object Reference shared pointer on the object
|
||||
*/
|
||||
void remove(const std::shared_ptr<ewol::Object>& _object);
|
||||
public:
|
||||
void removeAllRemovedObject();
|
||||
void cleanInternalRemoved();
|
||||
|
||||
std::shared_ptr<ewol::Object> get(const std::string& _name);
|
||||
private:
|
||||
void informOneObjectIsRemoved(const std::shared_ptr<ewol::Object>& _object);
|
||||
private:
|
||||
ewol::object::MultiCast m_multiCast; //!< muticast manager
|
||||
public:
|
||||
|
@ -34,7 +34,7 @@ void ewol::Object::autoDestroy() {
|
||||
}
|
||||
|
||||
void ewol::Object::requestDestroyFromChild(const std::shared_ptr<ewol::Object>& _child) {
|
||||
EWOL_WARNING("Call From Child with no effects ==> must implement : requestDestroyFromChild(...)");
|
||||
EWOL_CRITICAL("Call From Child with no effects ==> must implement : requestDestroyFromChild(...)");
|
||||
}
|
||||
void ewol::Object::setParent(const std::shared_ptr<ewol::Object>& _newParent) {
|
||||
// TODO : Implement change of parent ...
|
||||
@ -59,8 +59,6 @@ ewol::Object::Object() :
|
||||
|
||||
ewol::Object::~Object() {
|
||||
EWOL_DEBUG("delete Object : [" << m_uniqueId << "] : " << getTypeDescription());
|
||||
//getObjectManager().remove(shared_from_this());
|
||||
// TODO : getMultiCast().rm();
|
||||
m_externEvent.clear();
|
||||
m_availlableEventId.clear();
|
||||
m_uniqueId = -1;
|
||||
|
@ -154,15 +154,15 @@ void ewol::resource::Manager::contextHasBeenDestroyed() {
|
||||
|
||||
// internal generic keeper ...
|
||||
std::shared_ptr<ewol::Resource> ewol::resource::Manager::localKeep(const std::string& _filename) {
|
||||
EWOL_VERBOSE("KEEP (DEFAULT) : file : \"" << _filename << "\"");
|
||||
EWOL_VERBOSE("KEEP (DEFAULT) : file : '" << _filename << "' in " << m_resourceList.size() << " resources");
|
||||
for (auto &it : m_resourceList) {
|
||||
std::shared_ptr<ewol::Resource> tmpRessource = it.lock();
|
||||
if ( tmpRessource != nullptr
|
||||
&& tmpRessource->getName() == _filename) {
|
||||
return tmpRessource;
|
||||
if (tmpRessource != nullptr) {
|
||||
if (tmpRessource->getName() == _filename) {
|
||||
return tmpRessource;
|
||||
}
|
||||
}
|
||||
}
|
||||
// we did not find it ...
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@ -181,18 +181,13 @@ void ewol::resource::Manager::localAdd(const std::shared_ptr<ewol::Resource>& _o
|
||||
}
|
||||
|
||||
// in case of error ...
|
||||
bool ewol::resource::Manager::checkResourceToRemove() {
|
||||
void ewol::resource::Manager::cleanInternalRemoved() {
|
||||
//EWOL_INFO("remove object in Manager");
|
||||
updateContext();
|
||||
for (auto it(m_resourceList.begin()); it!=m_resourceList.end(); ++it) {
|
||||
if ((*it).lock() == nullptr) {
|
||||
if ((*it).expired() == true) {
|
||||
m_resourceList.erase(it);
|
||||
it = m_resourceList.begin();
|
||||
continue;
|
||||
}
|
||||
m_resourceList.erase(it);
|
||||
it = m_resourceList.begin();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ namespace ewol {
|
||||
// internal API to extent eResources in extern Soft
|
||||
std::shared_ptr<ewol::Resource> localKeep(const std::string& _filename);
|
||||
void localAdd(const std::shared_ptr<ewol::Resource>& _object);
|
||||
virtual bool checkResourceToRemove();
|
||||
virtual void cleanInternalRemoved();
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -33,8 +33,6 @@
|
||||
#define __class__ "ewol::widget::Manager"
|
||||
|
||||
ewol::widget::Manager::Manager() :
|
||||
m_focusWidgetDefault(nullptr),
|
||||
m_focusWidgetCurrent(nullptr),
|
||||
m_havePeriodic(false),
|
||||
m_haveRedraw(true),
|
||||
m_applWakeUpTime(0),
|
||||
@ -85,23 +83,24 @@ void ewol::widget::Manager::focusKeep(const std::shared_ptr<ewol::Widget>& _newW
|
||||
}
|
||||
EWOL_VERBOSE("focusKeep=" << _newWidget->getId() );
|
||||
//etk::log::displayBacktrace();
|
||||
if (_newWidget == m_focusWidgetCurrent) {
|
||||
auto focusWidgetCurrent = m_focusWidgetCurrent.lock();
|
||||
if (_newWidget == focusWidgetCurrent) {
|
||||
// nothing to do ...
|
||||
return;
|
||||
}
|
||||
if (m_focusWidgetCurrent != nullptr) {
|
||||
EWOL_DEBUG("Rm focus on WidgetID=" << m_focusWidgetCurrent->getId() );
|
||||
m_focusWidgetCurrent->rmFocus();
|
||||
m_focusWidgetCurrent = nullptr;
|
||||
if (focusWidgetCurrent != nullptr) {
|
||||
EWOL_DEBUG("Rm focus on WidgetID=" << focusWidgetCurrent->getId() );
|
||||
focusWidgetCurrent->rmFocus();
|
||||
focusWidgetCurrent.reset();
|
||||
}
|
||||
if (_newWidget->canHaveFocus() == false) {
|
||||
EWOL_DEBUG("Widget can not have focus, id=" << _newWidget->getId() );
|
||||
return;
|
||||
}
|
||||
m_focusWidgetCurrent = _newWidget;
|
||||
if (m_focusWidgetCurrent != nullptr) {
|
||||
EWOL_DEBUG("Set focus on WidgetID=" << m_focusWidgetCurrent->getId() );
|
||||
m_focusWidgetCurrent->setFocus();
|
||||
if (_newWidget != nullptr) {
|
||||
EWOL_DEBUG("Set focus on WidgetID=" << _newWidget->getId() );
|
||||
_newWidget->setFocus();
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,47 +110,54 @@ void ewol::widget::Manager::focusSetDefault(const std::shared_ptr<ewol::Widget>&
|
||||
EWOL_VERBOSE("Widget can not have focus, id=" << _newWidget->getId() );
|
||||
return;
|
||||
}
|
||||
if (m_focusWidgetDefault == m_focusWidgetCurrent) {
|
||||
if (m_focusWidgetCurrent != nullptr) {
|
||||
EWOL_DEBUG("Rm focus on WidgetID=" << m_focusWidgetCurrent->getId() );
|
||||
m_focusWidgetCurrent->rmFocus();
|
||||
std::shared_ptr<ewol::Widget> focusWidgetDefault = m_focusWidgetDefault.lock();
|
||||
std::shared_ptr<ewol::Widget> focusWidgetCurrent = m_focusWidgetCurrent.lock();
|
||||
if (focusWidgetDefault == focusWidgetCurrent) {
|
||||
if (focusWidgetCurrent != nullptr) {
|
||||
EWOL_DEBUG("Rm focus on WidgetID=" << focusWidgetCurrent->getId() );
|
||||
focusWidgetCurrent->rmFocus();
|
||||
}
|
||||
m_focusWidgetCurrent = _newWidget;
|
||||
if (m_focusWidgetCurrent != nullptr) {
|
||||
EWOL_DEBUG("Set focus on WidgetID=" << m_focusWidgetCurrent->getId() );
|
||||
m_focusWidgetCurrent->setFocus();
|
||||
if (_newWidget != nullptr) {
|
||||
EWOL_DEBUG("Set focus on WidgetID=" << _newWidget->getId() );
|
||||
_newWidget->setFocus();
|
||||
}
|
||||
}
|
||||
m_focusWidgetDefault = _newWidget;
|
||||
}
|
||||
|
||||
void ewol::widget::Manager::focusRelease() {
|
||||
if (m_focusWidgetDefault == m_focusWidgetCurrent) {
|
||||
std::shared_ptr<ewol::Widget> focusWidgetDefault = m_focusWidgetDefault.lock();
|
||||
std::shared_ptr<ewol::Widget> focusWidgetCurrent = m_focusWidgetCurrent.lock();
|
||||
if (focusWidgetDefault == focusWidgetCurrent) {
|
||||
// nothink to do ...
|
||||
return;
|
||||
}
|
||||
if (m_focusWidgetCurrent != nullptr) {
|
||||
EWOL_DEBUG("Rm focus on WidgetID=" << m_focusWidgetCurrent->getId() );
|
||||
m_focusWidgetCurrent->rmFocus();
|
||||
if (focusWidgetCurrent != nullptr) {
|
||||
EWOL_DEBUG("Rm focus on WidgetID=" << focusWidgetCurrent->getId() );
|
||||
focusWidgetCurrent->rmFocus();
|
||||
}
|
||||
m_focusWidgetCurrent = m_focusWidgetDefault;
|
||||
if (nullptr != m_focusWidgetCurrent) {
|
||||
EWOL_DEBUG("Set focus on WidgetID=" << m_focusWidgetCurrent->getId() );
|
||||
m_focusWidgetCurrent->setFocus();
|
||||
focusWidgetCurrent = m_focusWidgetCurrent.lock();
|
||||
if (nullptr != focusWidgetCurrent) {
|
||||
EWOL_DEBUG("Set focus on WidgetID=" << focusWidgetCurrent->getId() );
|
||||
focusWidgetCurrent->setFocus();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const std::shared_ptr<ewol::Widget>& ewol::widget::Manager::focusGet() {
|
||||
return m_focusWidgetCurrent;
|
||||
std::shared_ptr<ewol::Widget> ewol::widget::Manager::focusGet() {
|
||||
return m_focusWidgetCurrent.lock();
|
||||
}
|
||||
|
||||
void ewol::widget::Manager::focusRemoveIfRemove(const std::shared_ptr<ewol::Widget>& _newWidget) {
|
||||
if (m_focusWidgetCurrent == _newWidget) {
|
||||
std::shared_ptr<ewol::Widget> focusWidgetDefault = m_focusWidgetDefault.lock();
|
||||
std::shared_ptr<ewol::Widget> focusWidgetCurrent = m_focusWidgetCurrent.lock();
|
||||
if (focusWidgetCurrent == _newWidget) {
|
||||
EWOL_WARNING("Release focus when remove widget");
|
||||
focusRelease();
|
||||
}
|
||||
if (m_focusWidgetDefault == _newWidget) {
|
||||
if (focusWidgetDefault == _newWidget) {
|
||||
EWOL_WARNING("Release default focus when remove widget");
|
||||
focusSetDefault(nullptr);
|
||||
}
|
||||
@ -163,14 +169,13 @@ void ewol::widget::Manager::periodicCallAdd(const std::shared_ptr<ewol::Widget>&
|
||||
}
|
||||
m_havePeriodic = true;
|
||||
for (auto &it : m_listOfPeriodicWidget) {
|
||||
if (it == _pWidget) {
|
||||
if (it.lock() == _pWidget) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
for (auto &it : m_listOfPeriodicWidget) {
|
||||
if (it == nullptr) {
|
||||
if (it.expired() == true) {
|
||||
it = _pWidget;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -179,16 +184,17 @@ void ewol::widget::Manager::periodicCallAdd(const std::shared_ptr<ewol::Widget>&
|
||||
|
||||
void ewol::widget::Manager::periodicCallRm(const std::shared_ptr<ewol::Widget>& _pWidget) {
|
||||
for (auto &it : m_listOfPeriodicWidget) {
|
||||
if (it == _pWidget) {
|
||||
if (it.lock() == _pWidget) {
|
||||
it.reset();
|
||||
}
|
||||
}
|
||||
periodicCallUpdateCount();
|
||||
}
|
||||
|
||||
void ewol::widget::Manager::periodicCallUpdateCount() {
|
||||
int32_t nbElement = 0;
|
||||
for (auto &it : m_listOfPeriodicWidget) {
|
||||
if (it != nullptr) {
|
||||
if (it.expired() == false) {
|
||||
nbElement++;
|
||||
}
|
||||
}
|
||||
@ -216,15 +222,16 @@ void ewol::widget::Manager::periodicCall(int64_t _localTime) {
|
||||
|
||||
EWOL_VERBOSE("periodic : " << _localTime);
|
||||
for (int32_t iii=m_listOfPeriodicWidget.size()-1; iii >= 0 ; iii--) {
|
||||
if (nullptr != m_listOfPeriodicWidget[iii]) {
|
||||
int64_t deltaTimeCallUser = m_listOfPeriodicWidget[iii]->systemGetCallDeltaTime();
|
||||
auto tmpWidget = m_listOfPeriodicWidget[iii].lock();
|
||||
if (nullptr != tmpWidget) {
|
||||
int64_t deltaTimeCallUser = tmpWidget->systemGetCallDeltaTime();
|
||||
if (deltaTimeCallUser <= 0) {
|
||||
myTime.setDeltaCall(deltaTime);
|
||||
EWOL_VERBOSE("[" << iii << "] periodic : " << myTime);
|
||||
m_listOfPeriodicWidget[iii]->systemSetLastCallTime(_localTime);
|
||||
m_listOfPeriodicWidget[iii]->periodicCall(myTime);
|
||||
tmpWidget->systemSetLastCallTime(_localTime);
|
||||
tmpWidget->periodicCall(myTime);
|
||||
} else {
|
||||
int64_t lastCallTime = m_listOfPeriodicWidget[iii]->systemGetLastCallTime();
|
||||
int64_t lastCallTime = tmpWidget->systemGetLastCallTime();
|
||||
if (lastCallTime == 0) {
|
||||
lastCallTime = _localTime;
|
||||
}
|
||||
@ -232,8 +239,8 @@ void ewol::widget::Manager::periodicCall(int64_t _localTime) {
|
||||
if (deltaLocalTime >= lastCallTime) {
|
||||
myTime.setDeltaCall(deltaLocalTime);
|
||||
EWOL_VERBOSE("[" << iii << "] periodic : " << myTime);
|
||||
m_listOfPeriodicWidget[iii]->systemSetLastCallTime(_localTime);
|
||||
m_listOfPeriodicWidget[iii]->periodicCall(myTime);
|
||||
tmpWidget->systemSetLastCallTime(_localTime);
|
||||
tmpWidget->periodicCall(myTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -297,20 +304,3 @@ std::string ewol::widget::Manager::list() {
|
||||
return tmpVal;
|
||||
}
|
||||
|
||||
void ewol::widget::Manager::onObjectRemove(const std::shared_ptr<ewol::Object>& _object) {
|
||||
if (m_focusWidgetDefault == _object) {
|
||||
EWOL_VERBOSE("Remove object ==> rm default focus !!!");
|
||||
m_focusWidgetDefault.reset();
|
||||
}
|
||||
if (m_focusWidgetCurrent == _object) {
|
||||
EWOL_VERBOSE("Remove object ==> rm current focus !!!");
|
||||
m_focusWidgetCurrent.reset();
|
||||
}
|
||||
for (auto &it : m_listOfPeriodicWidget) {
|
||||
if (it == _object) {
|
||||
EWOL_VERBOSE("Remove object ==> rm periodic call !!!");
|
||||
it.reset();
|
||||
}
|
||||
}
|
||||
periodicCallUpdateCount();
|
||||
}
|
||||
|
@ -23,9 +23,9 @@ namespace ewol {
|
||||
typedef std::shared_ptr<ewol::Widget> (*creator_tf)();
|
||||
private:
|
||||
// For the focus Management
|
||||
std::shared_ptr<ewol::Widget> m_focusWidgetDefault;
|
||||
std::shared_ptr<ewol::Widget> m_focusWidgetCurrent;
|
||||
std::vector<std::shared_ptr<ewol::Widget>> m_listOfPeriodicWidget;
|
||||
std::weak_ptr<ewol::Widget> m_focusWidgetDefault;
|
||||
std::weak_ptr<ewol::Widget> m_focusWidgetCurrent;
|
||||
std::vector<std::weak_ptr<ewol::Widget>> m_listOfPeriodicWidget;
|
||||
bool m_havePeriodic;
|
||||
bool m_haveRedraw;
|
||||
etk::Hash<creator_tf> m_creatorList;
|
||||
@ -38,7 +38,7 @@ namespace ewol {
|
||||
void focusKeep(const std::shared_ptr<ewol::Widget>& _newWidget); // set the focus at the specific widget
|
||||
void focusSetDefault(const std::shared_ptr<ewol::Widget>& _newWidget); // select the default focus getter
|
||||
void focusRelease(); // release focus from the current widget to the default
|
||||
const std::shared_ptr<ewol::Widget>& focusGet();
|
||||
std::shared_ptr<ewol::Widget> focusGet();
|
||||
void focusRemoveIfRemove(const std::shared_ptr<ewol::Widget>& _newWidget);
|
||||
|
||||
void periodicCallAdd(const std::shared_ptr<ewol::Widget>& _pWidget);
|
||||
@ -55,7 +55,6 @@ namespace ewol {
|
||||
std::shared_ptr<ewol::Widget> create(const std::string& _name);
|
||||
bool exist(const std::string& _name);
|
||||
std::string list();
|
||||
virtual void onObjectRemove(const std::shared_ptr<ewol::Object>& _object);
|
||||
private:
|
||||
void periodicCallUpdateCount();
|
||||
};
|
||||
|
@ -196,7 +196,6 @@ void ewol::widget::Windows::popUpWidgetPop() {
|
||||
if (m_popUpWidgetList.size() == 0) {
|
||||
return;
|
||||
}
|
||||
m_popUpWidgetList.back()->removeParent();
|
||||
m_popUpWidgetList.pop_back();
|
||||
}
|
||||
|
||||
@ -271,6 +270,7 @@ void ewol::widget::Windows::requestDestroyFromChild(const std::shared_ptr<Object
|
||||
(*it).reset();
|
||||
m_popUpWidgetList.erase(it);
|
||||
it = m_popUpWidgetList.begin();
|
||||
markToRedraw();
|
||||
continue;
|
||||
}
|
||||
++it;
|
||||
@ -281,5 +281,6 @@ void ewol::widget::Windows::requestDestroyFromChild(const std::shared_ptr<Object
|
||||
}
|
||||
m_subWidget->removeParent();
|
||||
m_subWidget.reset();
|
||||
markToRedraw();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user