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:
parent
a9eb2303fb
commit
4e811bed17
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue