Efl_Input_Device: Implement efl_input_device_parent_set().

This commits moves the parent_set implementation where it should be.
This commit is contained in:
Guilherme Iscaro 2016-09-20 13:40:31 -03:00 committed by Bruno Dilly
parent fc66dd62b7
commit cdc5ecec1e
3 changed files with 23 additions and 17 deletions

View File

@ -103,4 +103,23 @@ _efl_input_device_parent_get(Eo *obj EINA_UNUSED, Efl_Input_Device_Data *pd)
return pd->parent;
}
EOLIAN static void
_efl_input_device_parent_set(Eo *obj, Efl_Input_Device_Data *pd, Efl_Input_Device *parent)
{
if (pd->parent == parent) return;
if (pd->parent)
{
Efl_Input_Device_Data *p = efl_data_scope_get(pd->parent, EFL_INPUT_DEVICE_CLASS);
p->children = eina_list_remove(p->children, obj);
efl_unref(obj);
}
pd->parent = parent;
if (parent)
{
Efl_Input_Device_Data *p = efl_data_scope_get(parent, EFL_INPUT_DEVICE_CLASS);
p->children = eina_list_append(p->children, obj);
efl_ref(obj);
}
}
#include "interfaces/efl_input_device.eo.c"

View File

@ -39,7 +39,7 @@ enum Efl.Input.Device.Sub_Class
/* This represents Evas_Device */
/* FIXME: no parent, no children and no Evas */
/* FIXME: no children and no Evas */
class Efl.Input.Device (Efl.Object)
{
@ -75,7 +75,7 @@ class Efl.Input.Device (Efl.Object)
}
}
@property parent {
/* set {} */
set {}
get {}
values {
parent: Efl.Input.Device;

View File

@ -155,24 +155,11 @@ evas_device_parent_set(Evas_Device *dev, Evas_Device *parent)
SAFETY_CHECK(parent, EFL_INPUT_DEVICE_CLASS);
}
/* FIXME: move this to Efl.Input.Device */
if (d->parent == parent) return;
if (d->parent)
{
Efl_Input_Device_Data *p = efl_data_scope_get(d->parent, EFL_INPUT_DEVICE_CLASS);
p->children = eina_list_remove(p->children, dev);
}
else if (parent)
e->devices = eina_list_remove(e->devices, dev);
d->parent = parent;
efl_input_device_parent_set(dev, parent);
if (parent)
{
Efl_Input_Device_Data *p = efl_data_scope_get(parent, EFL_INPUT_DEVICE_CLASS);
p->children = eina_list_append(p->children, dev);
}
e->devices = eina_list_remove(e->devices, dev);
else
e->devices = eina_list_append(e->devices, dev);
evas_event_callback_call(d->evas, EVAS_CALLBACK_DEVICE_CHANGED, dev);
}