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"
/* This represents Evas_Device */
-/* FIXME: no parent, no children and no Evas */
+/* FIXME: no children and no Evas */
class Efl.Input.Device (Efl.Object)
{
}
}
@property parent {
- /* set {} */
+ set {}
get {}
values {
parent: Efl.Input.Device;
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);
}