[DEBUG] try to find remove error

This commit is contained in:
Edouard DUPIN 2013-04-02 21:32:46 +02:00
parent f892d5981e
commit 27a6281357
6 changed files with 19 additions and 11 deletions

2
external/etk vendored

@ -1 +1 @@
Subproject commit 28d5740bf514df698c2cb1f31d9f65ec73fbc392
Subproject commit 070a4a3f99028b76dd6cc11fc9efcc37ba374221

View File

@ -132,6 +132,10 @@ void ewol::EObject::AutoDestroy(void)
{
ewol::EObjectManager::AutoRemove(this);
}
void ewol::EObject::RemoveObject(void)
{
ewol::EObjectManager::AutoRemove(this);
}
int32_t ewol::EObject::GetId(void)

View File

@ -54,18 +54,20 @@ namespace ewol {
/**
* @brief Get the UniqueId of the EObject
* @param ---
* @return the requested ID
*/
int32_t GetId(void);
/**
* @brief Auto-destroy the object
* @param ---
* @return ---
*/
void AutoDestroy(void);
/**
* @brief Asynchronous removing the object
*/
void RemoveObject(void);
/**
* @brief Get the current Object type of the EObject
* @note In Embended platforme, it is many time no -rtti flag, then it is not possible to use dynamic cast ==> this will replace it
@ -77,7 +79,6 @@ namespace ewol {
/**
* @brief Add a specific event Id in the list to prevent wrong link on a EObject
* @param[in] generateEventId event Id to add
* @return ---
*/
void AddEventId(const char * generateEventId);
@ -85,7 +86,6 @@ namespace ewol {
* @brief Generate event on all registered EObject
* @param[in] generateEventId event Id that is curetly generated
* @param[in] data data associated with the event
* @return ---
*/
void GenerateEventId(const char * generateEventId, const etk::UString& data = "");
@ -93,14 +93,12 @@ namespace ewol {
* @brief Generate Multicast event on all EObject requested the event
* @param[in] messageId Event Id that is generated
* @param[in] data String that is send at all the destinations
* @return ---
*/
void SendMultiCast(const char* const messageId, const etk::UString& data = "");
/**
* @brief Register of the arrival of a Multicast message
* @param[in] messageId Event Id waiting for...
* @return ---
*/
void RegisterMultiCast(const char* const messageId);
public:
@ -109,7 +107,6 @@ namespace ewol {
* @param[in] destinationObject pointer on the object that might be call when an event is generated
* @param[in] eventId Event generate inside the object
* @param[in] eventIdgenerated event generated when call the distant EObject.OnReceiveMessage(...)
* @return ---
*/
void RegisterOnEvent(ewol::EObject * destinationObject, const char * eventId, const char * eventIdgenerated = NULL);
@ -117,7 +114,6 @@ namespace ewol {
* @brief Inform object that an other object is removed ...
* @param[in] removeObject Pointer on the EObject remeved ==> the user must remove all reference on this EObject
* @note : Sub classes must call this class
* @return ---
*/
virtual void OnObjectRemove(ewol::EObject * removeObject);
@ -126,7 +122,6 @@ namespace ewol {
* @param[in] CallerObject Pointer on the EObject that information came from
* @param[in] eventId Message registered by this class
* @param[in] data Data registered by this class
* @return ---
*/
virtual void OnReceiveMessage(ewol::EObject * CallerObject, const char * eventId, const etk::UString& data) { };
};

View File

@ -109,6 +109,7 @@ void ewol::EObjectManager::AutoRemove(ewol::EObject* object)
// clean all EObject that request an autoRemove ...
void ewol::EObjectManager::RemoveAllAutoRemove(void)
{
//EWOL_DEBUG("Auto-Remove EObject section : " << m_eObjectAutoRemoveList.Size() << " elemeents");
while(0<m_eObjectAutoRemoveList.Size()) {
if (m_eObjectAutoRemoveList[0]!=NULL) {
EWOL_DEBUG("Real Auto-Remove EObject type=\"" << m_eObjectAutoRemoveList[0]->GetObjectType() << "\"");

View File

@ -118,6 +118,13 @@ void widget::Layer::SubWidgetAdd(ewol::Widget* newWidget)
m_subWidget.PushBack(newWidget);
}
void widget::Layer::SubWidgetAddFront(ewol::Widget* newWidget)
{
if (NULL == newWidget) {
return;
}
m_subWidget.PushFront(newWidget);
}
void widget::Layer::SubWidgetRemove(ewol::Widget* newWidget)
{

View File

@ -38,6 +38,7 @@ namespace widget {
public:
virtual void SubWidgetRemoveAll(void);
virtual void SubWidgetAdd(ewol::Widget* newWidget);
virtual void SubWidgetAddFront(ewol::Widget* newWidget);
virtual void SubWidgetRemove(ewol::Widget* newWidget);
virtual void SubWidgetUnLink(ewol::Widget* newWidget);
protected: