diff options
Diffstat (limited to 'src/lib/evas/canvas/efl_input_key.c')
-rw-r--r-- | src/lib/evas/canvas/efl_input_key.c | 71 |
1 files changed, 18 insertions, 53 deletions
diff --git a/src/lib/evas/canvas/efl_input_key.c b/src/lib/evas/canvas/efl_input_key.c index c6b8061211..ce1acd6b26 100644 --- a/src/lib/evas/canvas/efl_input_key.c +++ b/src/lib/evas/canvas/efl_input_key.c @@ -12,50 +12,18 @@ #define MY_CLASS EFL_INPUT_KEY_CLASS -static Efl_Input_Key *s_cached_event = NULL; - -static void -_del_hook(Eo *evt) -{ - if (!s_cached_event) - { - if (efl_parent_get(evt)) - { - efl_ref(evt); - efl_parent_set(evt, NULL); - } - efl_reuse(evt); - s_cached_event = evt; - efl_input_reset(s_cached_event); - } - else - { - efl_del_intercept_set(evt, NULL); - efl_del(evt); - } -} - EOLIAN static Efl_Input_Key * -_efl_input_key_efl_input_event_instance_get(Eo *klass EINA_UNUSED, void *_pd EINA_UNUSED, +_efl_input_key_efl_input_event_instance_get(Eo *klass, void *_pd EINA_UNUSED, Eo *owner, void **priv) { Efl_Input_Key_Data *ev; Efl_Input_Key *evt; Evas *evas; - if (s_cached_event) - { - evt = s_cached_event; - s_cached_event = NULL; - efl_parent_set(evt, owner); - } - else - { - evt = efl_add(EFL_INPUT_KEY_CLASS, owner); - efl_del_intercept_set(evt, _del_hook); - } + evt = efl_input_event_instance_get(klass, owner); + if (!evt) return NULL; - ev = efl_data_scope_get(evt, EFL_INPUT_KEY_CLASS); + ev = efl_data_scope_get(evt, klass); ev->fake = EINA_FALSE; if (priv) *priv = ev; @@ -71,12 +39,9 @@ _efl_input_key_efl_input_event_instance_get(Eo *klass EINA_UNUSED, void *_pd EIN } EOLIAN static void -_efl_input_key_class_destructor(Efl_Class *klass EINA_UNUSED) +_efl_input_key_class_destructor(Efl_Class *klass) { - // this is a strange situation... - efl_del_intercept_set(s_cached_event, NULL); - efl_del(s_cached_event); - s_cached_event = NULL; + efl_input_event_instance_clean(klass); } EOLIAN static Efl_Object * @@ -113,7 +78,7 @@ _efl_input_key_pressed_set(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, Eina_Boo } EOLIAN static Eina_Bool -_efl_input_key_pressed_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_pressed_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->pressed; } @@ -125,7 +90,7 @@ _efl_input_key_key_name_set(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, const c } EOLIAN static const char * -_efl_input_key_key_name_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_key_name_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->keyname; } @@ -137,7 +102,7 @@ _efl_input_key_key_set(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, const char * } EOLIAN static const char * -_efl_input_key_key_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_key_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->key; } @@ -149,7 +114,7 @@ _efl_input_key_string_set(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, const cha } EOLIAN static const char * -_efl_input_key_string_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_string_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->string; } @@ -161,7 +126,7 @@ _efl_input_key_compose_set(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, const ch } EOLIAN static const char * -_efl_input_key_compose_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_compose_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->compose; } @@ -173,7 +138,7 @@ _efl_input_key_key_code_set(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, int val } EOLIAN static int -_efl_input_key_key_code_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_key_code_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->keycode; } @@ -221,7 +186,7 @@ _efl_input_key_efl_input_event_timestamp_set(Eo *obj EINA_UNUSED, Efl_Input_Key_ } EOLIAN static double -_efl_input_key_efl_input_event_timestamp_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_efl_input_event_timestamp_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->timestamp; } @@ -233,7 +198,7 @@ _efl_input_key_efl_input_event_event_flags_set(Eo *obj EINA_UNUSED, Efl_Input_Ke } EOLIAN static Efl_Input_Flags -_efl_input_key_efl_input_event_event_flags_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_efl_input_event_event_flags_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->event_flags; } @@ -245,13 +210,13 @@ _efl_input_key_efl_input_event_device_set(Eo *obj EINA_UNUSED, Efl_Input_Key_Dat } EOLIAN static Efl_Input_Device * -_efl_input_key_efl_input_event_device_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_efl_input_event_device_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->device; } EOLIAN static Eina_Bool -_efl_input_key_efl_input_state_modifier_enabled_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, +_efl_input_key_efl_input_state_modifier_enabled_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, Efl_Input_Modifier mod, const Efl_Input_Device *seat) { const char *name; @@ -268,7 +233,7 @@ _efl_input_key_efl_input_state_modifier_enabled_get(Eo *obj EINA_UNUSED, Efl_Inp } EOLIAN static Eina_Bool -_efl_input_key_efl_input_state_lock_enabled_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, +_efl_input_key_efl_input_state_lock_enabled_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd, Efl_Input_Lock lock, const Efl_Input_Device *seat) { const char *name; @@ -285,7 +250,7 @@ _efl_input_key_efl_input_state_lock_enabled_get(Eo *obj EINA_UNUSED, Efl_Input_K } EOLIAN static Eina_Bool -_efl_input_key_efl_input_event_fake_get(Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) +_efl_input_key_efl_input_event_fake_get(const Eo *obj EINA_UNUSED, Efl_Input_Key_Data *pd) { return pd->fake; } |