eio_model: Provide main loop even without parent

An eio model (and I believe most other models as well, in fact)
require a Efl.Loop.User as parent in order for efl future/promises
to work. This adds a fallback code directly inside eio model. The
alternative was to parent and efl_del all models in fileselector.

See T4686
This commit is contained in:
Jean-Philippe Andre 2016-10-05 20:53:26 +09:00
parent a9eb2303fb
commit 4e811bed17
2 changed files with 14 additions and 1 deletions

View File

@ -703,7 +703,6 @@ _eio_model_efl_object_destructor(Eo *obj , Eio_Model_Data *priv)
efl_destructor(efl_super(obj, MY_CLASS));
}
static Eo *
_eio_model_efl_object_parent_get(Eo *obj , Eio_Model_Data *priv)
{
@ -723,4 +722,17 @@ _eio_model_efl_object_parent_get(Eo *obj , Eio_Model_Data *priv)
}
return model;
}
EOLIAN static Eo *
_eio_model_efl_object_provider_find(Eo *obj, Eio_Model_Data *priv EINA_UNUSED, const Efl_Class *klass)
{
Eo *provider = efl_provider_find(efl_super(obj, MY_CLASS), klass);
// Provide main loop even if we don't have a loop user parent
if (!provider && (klass == EFL_LOOP_CLASS) && eina_main_loop_is())
return ecore_main_loop_get();
return provider;
}
#include "eio_model.eo.c"

View File

@ -37,6 +37,7 @@ class Eio.Model (Efl.Object, Efl.Model)
Efl.Object.constructor;
Efl.Object.destructor;
Efl.Object.parent.get;
Efl.Object.provider_find;
Efl.Model.properties.get;
Efl.Model.property_set;
Efl.Model.property_get;