diff options
author | Woochanlee <wc0917.lee@samsung.com> | 2020-01-22 07:37:11 -0500 |
---|---|---|
committer | Christopher Michael <cp.michael@samsung.com> | 2020-01-22 07:37:11 -0500 |
commit | f1740535648a4d1c8d372376a727d23e61c68c5d (patch) | |
tree | d32eed34d36f8db41d8176acfd12827d9bddf696 /src/lib | |
parent | 700d87b3709c5eeb6fa7a238b24ae93e6fad4d68 (diff) | |
download | efl-f1740535648a4d1c8d372376a727d23e61c68c5d.tar.gz |
ecore_wl2: Add ecore_wl2_input_keyboard_repeat_set() API.
Summary:
Add API to set input's keyboard repeat.
get API was already there.
Reviewers: devilhorns
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11131
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/ecore_wl2/Ecore_Wl2.h | 11 | ||||
-rw-r--r-- | src/lib/ecore_wl2/ecore_wl2_input.c | 20 | ||||
-rw-r--r-- | src/lib/ecore_wl2/ecore_wl2_private.h | 1 |
3 files changed, 30 insertions, 2 deletions
diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index 6a54812204..eed6660c7e 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -1449,6 +1449,17 @@ EAPI Eina_Stringshare *ecore_wl2_input_name_get(Ecore_Wl2_Input *input); EAPI Eina_Bool ecore_wl2_input_keyboard_repeat_get(const Ecore_Wl2_Input *input, double *rate, double *delay); /** + * Set the keyboard repeat rate and delay of an input + * @param input The input + * @param rate Pointer to store the repeat rate (in seconds) + * @param rate Pointer to store the repeat delay (in seconds) + * @return True if repeat is enabled + * @ingroup Ecore_Wl2_Input_Group + * @since 1.24 + */ +EAPI Eina_Bool ecore_wl2_input_keyboard_repeat_set(Ecore_Wl2_Input *input, double rate, double delay); + +/** * Retrieves the mouse position of the seat * * @param input The seat diff --git a/src/lib/ecore_wl2/ecore_wl2_input.c b/src/lib/ecore_wl2/ecore_wl2_input.c index 6694f3687d..92cc9a52bd 100644 --- a/src/lib/ecore_wl2/ecore_wl2_input.c +++ b/src/lib/ecore_wl2/ecore_wl2_input.c @@ -1173,8 +1173,11 @@ _keyboard_cb_repeat_setup(void *data, struct wl_keyboard *keyboard EINA_UNUSED, } input->repeat.enabled = EINA_TRUE; - input->repeat.rate = (1.0 / rate); - input->repeat.delay = (delay / 1000.0); + if (!input->repeat.changed) + { + input->repeat.rate = (1.0 / rate); + input->repeat.delay = (delay / 1000.0); + } ev = malloc(sizeof(Ecore_Wl2_Event_Seat_Keymap_Changed)); if (ev) { @@ -1615,6 +1618,7 @@ _ecore_wl2_input_add(Ecore_Wl2_Display *display, unsigned int id, unsigned int v input->repeat.rate = 0.025; input->repeat.delay = 0.4; input->repeat.enabled = EINA_TRUE; + input->repeat.changed = EINA_FALSE; wl_array_init(&input->data.selection.types); wl_array_init(&input->data.drag.types); @@ -1814,6 +1818,18 @@ ecore_wl2_input_keymap_get(const Ecore_Wl2_Input *input) } EAPI Eina_Bool +ecore_wl2_input_keyboard_repeat_set(Ecore_Wl2_Input *input, double rate, double delay) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(input, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(input->display, EINA_FALSE); + EINA_SAFETY_ON_FALSE_RETURN_VAL(input->wl.keyboard, EINA_FALSE); + input->repeat.rate = rate; + input->repeat.delay = delay; + input->repeat.changed = EINA_TRUE; + return input->repeat.enabled; +} + +EAPI Eina_Bool ecore_wl2_input_keyboard_repeat_get(const Ecore_Wl2_Input *input, double *rate, double *delay) { EINA_SAFETY_ON_NULL_RETURN_VAL(input, EINA_FALSE); diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 5178e8f3ea..0f8b7ffc09 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -508,6 +508,7 @@ struct _Ecore_Wl2_Input double rate, delay; Eina_Bool enabled : 1; Eina_Bool repeating : 1; + Eina_Bool changed : 1; } repeat; struct |