spinner: do not change value without highlight 04/192204/5 submit/tizen/20181108.080505 submit/tizen/20181109.041614
authorRadoslaw Cybulski <r.cybulski@partner.samsung.com>
Wed, 31 Oct 2018 13:47:19 +0000 (14:47 +0100)
committerShinwoo Kim <cinoo.kim@samsung.com>
Thu, 1 Nov 2018 09:13:04 +0000 (18:13 +0900)
This patch set handles following scenario of TFIVE-15036
1. Make sure Screen Reader mode is OFF.
2. Open Timer App
3. Set focus to "hr" field.
4. Turn Screen Reader mode ON.
5. Go to Timer App, rotate bezel.
4. Observe "Hr" field gets updated

If the spinner has focus before enabling the screen reader, then the spinner
value could be changed by bezel after enabling the screen reader.
This patch set does not change the spinner value if the spinner does not have
highlight.

Change-Id: I6c848ce5d147c402c1d21fcee9f18be81d3f262e

inc/wearable/circle/efl_extension_circle_private.h
src/wearable/circle/efl_extension_circle_object_spinner.c

index 42c869bf26fa894f81ea62aad1f653ba06f8820c..fdb1e3876686360289b6ccf2b5c3f07ee68b5c58 100644 (file)
@@ -224,6 +224,7 @@ struct _Eext_Circle_Object_Spinner_Data {
      Ecore_Timer *rotary_timer;
      Ecore_Timer *end_effect_expired_timer;
      Eina_Bool rotary_event;
+     Eina_Bool a11y_highlighted;
      double angle;
      double to_angle_offset;
      double end_effect_angle;
index 7fa44f701cf35c79953bfd8d73a7c6abbff4b194..9e36c13225e3e7316cafde44aa9cb6f3633e6071 100644 (file)
@@ -344,6 +344,13 @@ _rotary_changed_cb(void *data, Evas_Object *obj, Eext_Rotary_Event_Info *info)
 
         return EINA_TRUE;
      }
+
+   if (elm_atspi_bridge_utils_is_screen_reader_enabled())
+     {
+        if (!widget_data->a11y_highlighted)
+          return EINA_TRUE;
+     }
+
    if (obj == circle_obj->main_obj)
      circle_obj->is_propagated = EINA_TRUE;
 
@@ -536,6 +543,7 @@ static void
 _accessibility_spinner_highlighted_cb(void *data, Evas_Object *obj, void *event_info)
 {
    Eext_Circle_Object *circle_obj = data;
+   Eext_Circle_Object_Spinner_Data *widget_data = (Eext_Circle_Object_Spinner_Data *)circle_obj->widget_data;
    Evas_Object *btn = elm_object_part_content_get(circle_obj->widget_object, "elm.swallow.text_button");
 
    /* TODO: Reading information should be changed with UX team */
@@ -543,10 +551,14 @@ _accessibility_spinner_highlighted_cb(void *data, Evas_Object *obj, void *event_
    elm_atspi_accessible_reading_info_type_set(btn, ELM_ACCESSIBLE_READING_INFO_TYPE_DESCRIPTION);
 
    elm_object_focus_set(circle_obj->widget_object, EINA_TRUE);
+   widget_data->a11y_highlighted = EINA_TRUE;
 }
 static void
 _accessibility_spinner_unhighlighted_cb(void *data, Evas_Object *obj, void *event_info)
 {
    Eext_Circle_Object *circle_obj = data;
+   Eext_Circle_Object_Spinner_Data *widget_data = (Eext_Circle_Object_Spinner_Data *)circle_obj->widget_data;
+
    elm_object_focus_set(circle_obj->widget_object, EINA_FALSE);
+   widget_data->a11y_highlighted = EINA_FALSE;
 }