1 #ifdef HAVE_CONFIG_H
2 # include <config.h>
3 #endif
4 
5 #define EFL_INPUT_EVENT_PROTECTED
6 
7 #include "evas_common_private.h"
8 #include "evas_private.h"
9 
10 #define MY_CLASS EFL_INPUT_HOLD_CLASS
11 
12 EOLIAN static void
_efl_input_hold_input_hold_set(Eo * obj EINA_UNUSED,Efl_Input_Hold_Data * pd,Eina_Bool val)13 _efl_input_hold_input_hold_set(Eo *obj EINA_UNUSED, Efl_Input_Hold_Data *pd, Eina_Bool val)
14 {
15    pd->hold = !!val;
16 }
17 
18 EOLIAN static Eina_Bool
_efl_input_hold_input_hold_get(const Eo * obj EINA_UNUSED,Efl_Input_Hold_Data * pd)19 _efl_input_hold_input_hold_get(const Eo *obj EINA_UNUSED, Efl_Input_Hold_Data *pd)
20 {
21    return pd->hold;
22 }
23 
24 EOLIAN static void
_efl_input_hold_efl_input_event_device_set(Eo * obj EINA_UNUSED,Efl_Input_Hold_Data * pd,Efl_Input_Device * dev)25 _efl_input_hold_efl_input_event_device_set(Eo *obj EINA_UNUSED, Efl_Input_Hold_Data *pd, Efl_Input_Device *dev)
26 {
27    efl_replace(&pd->device, dev);
28 }
29 
30 EOLIAN static Efl_Input_Device *
_efl_input_hold_efl_input_event_device_get(const Eo * obj EINA_UNUSED,Efl_Input_Hold_Data * pd)31 _efl_input_hold_efl_input_event_device_get(const Eo *obj EINA_UNUSED, Efl_Input_Hold_Data *pd)
32 {
33    return pd->device;
34 }
35 
36 EOLIAN static double
_efl_input_hold_efl_input_event_timestamp_get(const Eo * obj EINA_UNUSED,Efl_Input_Hold_Data * pd)37 _efl_input_hold_efl_input_event_timestamp_get(const Eo *obj EINA_UNUSED, Efl_Input_Hold_Data *pd)
38 {
39    return pd->timestamp;
40 }
41 
42 EOLIAN static void
_efl_input_hold_efl_input_event_timestamp_set(Eo * obj EINA_UNUSED,Efl_Input_Hold_Data * pd,double ms)43 _efl_input_hold_efl_input_event_timestamp_set(Eo *obj EINA_UNUSED, Efl_Input_Hold_Data *pd, double ms)
44 {
45    pd->timestamp = ms;
46 }
47 
48 EOLIAN static void
_efl_input_hold_efl_input_event_event_flags_set(Eo * obj EINA_UNUSED,Efl_Input_Hold_Data * pd,Efl_Input_Flags flags)49 _efl_input_hold_efl_input_event_event_flags_set(Eo *obj EINA_UNUSED, Efl_Input_Hold_Data *pd, Efl_Input_Flags flags)
50 {
51    pd->event_flags = flags;
52 }
53 
54 EOLIAN static Efl_Input_Flags
_efl_input_hold_efl_input_event_event_flags_get(const Eo * obj EINA_UNUSED,Efl_Input_Hold_Data * pd)55 _efl_input_hold_efl_input_event_event_flags_get(const Eo *obj EINA_UNUSED, Efl_Input_Hold_Data *pd)
56 {
57    return pd->event_flags;
58 }
59 
60 EOLIAN static Eo *
_efl_input_hold_efl_object_constructor(Eo * obj,Efl_Input_Hold_Data * pd EINA_UNUSED)61 _efl_input_hold_efl_object_constructor(Eo *obj, Efl_Input_Hold_Data *pd EINA_UNUSED)
62 {
63    obj = efl_constructor(efl_super(obj, MY_CLASS));
64    efl_input_reset(obj);
65    return obj;
66 }
67 
68 static inline void
_efl_input_hold_free(Efl_Input_Hold_Data * pd)69 _efl_input_hold_free(Efl_Input_Hold_Data *pd)
70 {
71    efl_unref(pd->device);
72    free(pd->legacy);
73 }
74 
75 EOLIAN static void
_efl_input_hold_efl_object_destructor(Eo * obj,Efl_Input_Hold_Data * pd)76 _efl_input_hold_efl_object_destructor(Eo *obj, Efl_Input_Hold_Data *pd)
77 {
78    _efl_input_hold_free(pd);
79    efl_destructor(efl_super(obj, MY_CLASS));
80 }
81 
82 
83 EOAPI Eo*
efl_input_hold_instance_get(Efl_Object * owner,void ** priv)84 efl_input_hold_instance_get(Efl_Object *owner, void **priv)
85 {
86    Efl_Input_Event *evt = efl_input_event_instance_get(EFL_INPUT_HOLD_CLASS, owner);;
87 
88    if (!evt) return NULL;
89    if (priv) *priv = efl_data_scope_get(evt, MY_CLASS);
90    return evt;
91 }
92 
93 EOLIAN static void
_efl_input_hold_class_destructor(Efl_Class * klass)94 _efl_input_hold_class_destructor(Efl_Class *klass)
95 {
96    efl_input_event_instance_clean(klass);
97 }
98 
99 EOLIAN static void
_efl_input_hold_efl_input_event_reset(Eo * obj,Efl_Input_Hold_Data * pd)100 _efl_input_hold_efl_input_event_reset(Eo *obj, Efl_Input_Hold_Data *pd)
101 {
102    _efl_input_hold_free(pd);
103    memset(pd, 0, sizeof(*pd));
104    pd->eo = obj;
105 }
106 
107 EOLIAN static Efl_Input_Event *
_efl_input_hold_efl_duplicate_duplicate(const Eo * obj,Efl_Input_Hold_Data * pd)108 _efl_input_hold_efl_duplicate_duplicate(const Eo *obj, Efl_Input_Hold_Data *pd)
109 {
110    Efl_Input_Hold_Data *ev;
111    Efl_Input_Hold *evt;
112 
113    evt = efl_add(MY_CLASS, efl_parent_get(obj),
114                  efl_allow_parent_unref_set(efl_added, EINA_TRUE));
115    ev = efl_data_scope_get(evt, MY_CLASS);
116    if (!ev) return NULL;
117 
118    memcpy(ev, pd, sizeof(*ev));
119    ev->eo = evt;
120    ev->legacy = NULL;
121    ev->evas_done = 0;
122    ev->device = efl_ref(pd->device);
123 
124    return evt;
125 }
126 
127 EOLIAN static void *
_efl_input_hold_efl_input_event_legacy_info_get(Eo * obj,Efl_Input_Hold_Data * pd)128 _efl_input_hold_efl_input_event_legacy_info_get(Eo *obj, Efl_Input_Hold_Data *pd)
129 {
130    if (pd->legacy) return pd->legacy;
131    return efl_input_hold_legacy_info_fill(obj, NULL);
132 }
133 
134 /* Internal EO APIs */
135 
136 #define EFL_INPUT_HOLD_EXTRA_OPS \
137    EFL_OBJECT_OP_FUNC(efl_input_legacy_info_get, _efl_input_hold_efl_input_event_legacy_info_get)
138 
139 #include "efl_input_hold.eo.c"
140