ecore_wl: add keyboard repeat info set/get API. 53/171353/2
authorkim hosang <hosang12.kim@samsung.com>
Mon, 8 Jan 2018 10:57:57 +0000 (19:57 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Fri, 2 Mar 2018 02:09:39 +0000 (11:09 +0900)
Application want to change keyboard repeat rate and delay time.

@tizen_only

Change-Id: I53b92d4ae52d36385eb883a5c1c978e51931eac3

src/lib/ecore_wayland/Ecore_Wayland.h
src/lib/ecore_wayland/ecore_wl.c
src/lib/ecore_wayland/ecore_wl_input.c
src/lib/ecore_wayland/ecore_wl_private.h

index 7be48e1..d1ff1ca 100644 (file)
@@ -1462,6 +1462,30 @@ EAPI Eina_List *ecore_wl_window_keygrab_list_set(Ecore_Wl_Window *win, Eina_List
  */
 EAPI Eina_List *ecore_wl_window_keygrab_list_unset(Ecore_Wl_Window *win, Eina_List *infos);
 
+//TIZEN_ONLY(20180108): add keyboard repeat info set/get API.
+/**
+ *
+ * @brief Sets keyboard repeat infomation.
+ *
+ * @param rate key repeat rate value.
+ * @param delay key repeat delay value.
+ *
+ * @return false on error, true otherwise.
+ */
+EAPI Eina_Bool ecore_wl_keyboard_repeat_info_set(double rate, double delay);
+
+/**
+ *
+ * @brief Gets keyboard repeat infomation.
+ *
+ * @param rate key repeat rate value.
+ * @param delay key repeat delay value.
+ *
+ * @return false on error, true otherwise.
+ */
+EAPI Eina_Bool ecore_wl_keyboard_repeat_info_get(double *rate, double *delay);
+//
+
 EAPI void ecore_wl_window_conformant_set(Ecore_Wl_Window *win, unsigned int is_conformant);
 EAPI Eina_Bool ecore_wl_window_conformant_get(Ecore_Wl_Window *win);
 
index ac5a251..ccfbe1c 100644 (file)
@@ -2280,6 +2280,33 @@ ecore_wl_clipboard_data_only_set(Eina_Bool data_only)
    return _ecore_wl_disp->input->is_data_only;
 }
 
+//TIZEN_ONLY(20180108): add keyboard repeat info set/get API.
+EAPI Eina_Bool
+ecore_wl_keyboard_repeat_info_set(double rate, double delay)
+{
+   if (!_ecore_wl_disp) return EINA_FALSE;
+   if (!_ecore_wl_disp->input) return EINA_FALSE;
+
+   _ecore_wl_disp->input->repeat.changed = EINA_TRUE;
+   _ecore_wl_disp->input->repeat.rate = rate;
+   _ecore_wl_disp->input->repeat.delay = delay;
+
+   return EINA_TRUE;
+}
+
+EAPI Eina_Bool
+ecore_wl_keyboard_repeat_info_get(double *rate, double *delay)
+{
+   if (!_ecore_wl_disp) return EINA_FALSE;
+   if (!_ecore_wl_disp->input) return EINA_FALSE;
+
+   if (rate) *rate = _ecore_wl_disp->input->repeat.rate;
+   if (delay) *delay = _ecore_wl_disp->input->repeat.delay;
+
+   return EINA_TRUE;
+}
+//
+
 static void
 _ecore_wl_cb_clipboard_data_selected(void *data EINA_UNUSED, struct tizen_clipboard *tizen_clipboard EINA_UNUSED, struct wl_surface *surface)
 {
index 1daa6f2..5a67718 100644 (file)
@@ -485,6 +485,9 @@ _ecore_wl_input_add(Ecore_Wl_Display *ewd, unsigned int id)
    input->touch_focus = NULL;
 
    input->repeat.enabled = EINA_TRUE;
+   //TIZEN_ONLY(20180108): add keyboard repeat info set/get API.
+   input->repeat.changed = EINA_FALSE;
+   //
    input->repeat.rate = 0.025;
    input->repeat.delay = 0.4;
 
@@ -1252,8 +1255,12 @@ _ecore_wl_input_cb_keyboard_repeat_setup(void *data, struct wl_keyboard *keyboar
    else
      input->repeat.enabled = EINA_TRUE;
 
-   input->repeat.rate = (rate / 1000.0);
-   input->repeat.delay = (delay / 1000.0);
+   //TIZEN_ONLY(20180108): add keyboard repeat info set/get API.
+   if (!input->repeat.changed)
+     {
+        input->repeat.rate = (rate / 1000.0);
+        input->repeat.delay = (delay / 1000.0);
+     }
 }
 
 static Eina_Bool
index 98940e2..c43e142 100644 (file)
@@ -346,6 +346,9 @@ struct _Ecore_Wl_Input
         unsigned int sym, key, time;
         double rate, delay;
         Eina_Bool enabled : 1;
+        //TIZEN_ONLY(20180108): add keyboard repeat info set/get API.
+        Eina_Bool changed : 1;
+        //
      } repeat;
 
    unsigned int seat_version;