rebase_build: fix build error related with tizen only code
authorJiyoun Park <jy0703.park@samsung.com>
Sat, 23 Dec 2017 09:38:18 +0000 (18:38 +0900)
committerJiyoun Park <jy0703.park@samsung.com>
Sat, 23 Dec 2017 09:47:36 +0000 (18:47 +0900)
   opensource changed some sturcture and rename object.
   so we changed tizen only code based on open source.

13 files changed:
src/lib/edje/edje_util.c
src/lib/elementary/efl_ui_box.c
src/lib/elementary/efl_ui_progressbar.c
src/lib/elementary/efl_ui_win.c
src/lib/elementary/efl_ui_win_socket.c
src/lib/elementary/elc_popup.c
src/lib/elementary/elm_atspi_bridge.c
src/lib/elementary/elm_box.c
src/lib/elementary/elm_priv.h
src/lib/elementary/elm_toolbar.c
src/lib/elementary/elm_widget.c
src/lib/elementary/elm_widget.eo
src/lib/elementary/elm_widget_item.eo

index 011e123..3e62ebd 100644 (file)
@@ -6302,7 +6302,7 @@ edje_object_part_text_get(const Edje_Object *obj, const char *part)
  * TIZEN_ONLY_FEATURE: API for handling text properties of Edje                    *
  ***********************************************************************************/
 EOLIAN Eina_Bool
-_edje_object_part_text_min_policy_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, const char *state_name, Eina_Bool min_x, Eina_Bool min_y)
+_efl_canvas_layout_part_text_min_policy_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, const char *state_name, Eina_Bool min_x, Eina_Bool min_y)
 {
    Edje_Real_Part *rp;
    Edje_Part_Description_Text *desc;
@@ -6326,7 +6326,7 @@ _edje_object_part_text_min_policy_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const ch
 }
 
 EOLIAN Eina_Bool
-_edje_object_part_text_min_policy_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, const char *state_name, Eina_Bool *min_x, Eina_Bool *min_y)
+_efl_canvas_layout_part_text_min_policy_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, const char *state_name, Eina_Bool *min_x, Eina_Bool *min_y)
 {
    Edje_Real_Part *rp;
    Edje_Part_Description_Text *desc;
@@ -6350,7 +6350,7 @@ _edje_object_part_text_min_policy_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const ch
 }
 
 EOLIAN Eina_Bool
-_edje_object_part_text_valign_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, double valign)
+_efl_canvas_layout_part_text_valign_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, double valign)
 {
    Edje_Real_Part *rp;
    Edje_Part_Description_Text *desc;
@@ -6382,7 +6382,7 @@ _edje_object_part_text_valign_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *
 }
 
 EOLIAN double
-_edje_object_part_text_valign_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part)
+_efl_canvas_layout_part_text_valign_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part)
 {
    Edje_Real_Part *rp;
    Edje_Part_Description_Text *desc;
@@ -6409,9 +6409,15 @@ _edje_object_part_text_valign_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *
 
    return -1.0;
 }
+/*******
+ * END *
+ *******/
 
+/***********************************************************************************
+ * TIZEN_ONLY_FEATURE: ellipsize.marquee, ellipsize.fade for TEXTBLOCK, TEXT part. *
+ ***********************************************************************************/
 EOLIAN Eina_Bool
-_edje_object_part_text_marquee_always_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, Eina_Bool always)
+_efl_canvas_layout_part_text_marquee_duration_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, double duration)
 {
    Edje_Real_Part *rp;
 
@@ -6424,10 +6430,7 @@ _edje_object_part_text_marquee_always_set(Eo *eo_obj EINA_UNUSED, Edje *ed, cons
 
    if (rp->typedata.text)
      {
-        if (rp->typedata.text->ellipsize.marquee.always == always)
-           return EINA_TRUE;
-
-        rp->typedata.text->ellipsize.marquee.always = always;
+        rp->typedata.text->ellipsize.marquee.duration = duration;
 
         return EINA_TRUE;
      }
@@ -6435,33 +6438,37 @@ _edje_object_part_text_marquee_always_set(Eo *eo_obj EINA_UNUSED, Edje *ed, cons
    return EINA_FALSE;
 }
 
-EOLIAN Eina_Bool
-_edje_object_part_text_marquee_always_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part)
+EOLIAN double
+_efl_canvas_layout_part_text_marquee_duration_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part)
 {
    Edje_Real_Part *rp;
    Edje_Part_Description_Text *desc;
 
-   if (!part) return EINA_FALSE;
+   if (!part) return -1.0;
    rp = _edje_real_part_recursive_get(&ed, part);
-   if (!rp) return EINA_FALSE;
+   if (!rp) return -1.0;
    if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) &&
        (rp->part->type != EDJE_PART_TYPE_TEXT))
-     return EINA_FALSE;
+     return -1.0;
 
    if (rp->typedata.text)
-     return rp->typedata.text->ellipsize.marquee.always;
+     {
+        if (rp->typedata.text->ellipsize.marquee.duration <= 0.0)
+          {
+             desc = (Edje_Part_Description_Text *)rp->chosen_description;
+             return desc->text.ellipsize.marquee.duration;
+          }
+        else
+          {
+             return rp->typedata.text->ellipsize.marquee.duration;
+          }
+     }
 
-   return EINA_FALSE;
+   return -1.0;
 }
-/*******
- * END *
- *******/
 
-/***********************************************************************************
- * TIZEN_ONLY_FEATURE: ellipsize.marquee, ellipsize.fade for TEXTBLOCK, TEXT part. *
- ***********************************************************************************/
 EOLIAN Eina_Bool
-_edje_object_part_text_marquee_duration_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, double duration)
+_efl_canvas_layout_part_text_marquee_speed_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, double speed)
 {
    Edje_Real_Part *rp;
 
@@ -6474,7 +6481,7 @@ _edje_object_part_text_marquee_duration_set(Eo *eo_obj EINA_UNUSED, Edje *ed, co
 
    if (rp->typedata.text)
      {
-        rp->typedata.text->ellipsize.marquee.duration = duration;
+        rp->typedata.text->ellipsize.marquee.speed = speed;
 
         return EINA_TRUE;
      }
@@ -6483,7 +6490,7 @@ _edje_object_part_text_marquee_duration_set(Eo *eo_obj EINA_UNUSED, Edje *ed, co
 }
 
 EOLIAN double
-_edje_object_part_text_marquee_duration_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part)
+_efl_canvas_layout_part_text_marquee_speed_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part)
 {
    Edje_Real_Part *rp;
    Edje_Part_Description_Text *desc;
@@ -6497,14 +6504,14 @@ _edje_object_part_text_marquee_duration_get(Eo *eo_obj EINA_UNUSED, Edje *ed, co
 
    if (rp->typedata.text)
      {
-        if (rp->typedata.text->ellipsize.marquee.duration <= 0.0)
+        if (rp->typedata.text->ellipsize.marquee.speed <= 0.0)
           {
              desc = (Edje_Part_Description_Text *)rp->chosen_description;
-             return desc->text.ellipsize.marquee.duration;
+             return desc->text.ellipsize.marquee.speed;
           }
         else
           {
-             return rp->typedata.text->ellipsize.marquee.duration;
+             return rp->typedata.text->ellipsize.marquee.speed;
           }
      }
 
@@ -6512,7 +6519,7 @@ _edje_object_part_text_marquee_duration_get(Eo *eo_obj EINA_UNUSED, Edje *ed, co
 }
 
 EOLIAN Eina_Bool
-_edje_object_part_text_marquee_speed_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, double speed)
+_efl_canvas_layout_part_text_marquee_always_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, Eina_Bool always)
 {
    Edje_Real_Part *rp;
 
@@ -6525,7 +6532,10 @@ _edje_object_part_text_marquee_speed_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const
 
    if (rp->typedata.text)
      {
-        rp->typedata.text->ellipsize.marquee.speed = speed;
+        if (rp->typedata.text->ellipsize.marquee.always == always)
+           return EINA_TRUE;
+
+        rp->typedata.text->ellipsize.marquee.always = always;
 
         return EINA_TRUE;
      }
@@ -6533,33 +6543,23 @@ _edje_object_part_text_marquee_speed_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const
    return EINA_FALSE;
 }
 
-EOLIAN double
-_edje_object_part_text_marquee_speed_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part)
+EOLIAN Eina_Bool
+_efl_canvas_layout_part_text_marquee_always_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part)
 {
    Edje_Real_Part *rp;
    Edje_Part_Description_Text *desc;
 
-   if (!part) return -1.0;
+   if (!part) return EINA_FALSE;
    rp = _edje_real_part_recursive_get(&ed, part);
-   if (!rp) return -1.0;
+   if (!rp) return EINA_FALSE;
    if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) &&
        (rp->part->type != EDJE_PART_TYPE_TEXT))
-     return -1.0;
+     return EINA_FALSE;
 
    if (rp->typedata.text)
-     {
-        if (rp->typedata.text->ellipsize.marquee.speed <= 0.0)
-          {
-             desc = (Edje_Part_Description_Text *)rp->chosen_description;
-             return desc->text.ellipsize.marquee.speed;
-          }
-        else
-          {
-             return rp->typedata.text->ellipsize.marquee.speed;
-          }
-     }
+     return rp->typedata.text->ellipsize.marquee.always;
 
-   return -1.0;
+   return EINA_FALSE;
 }
 /*******
  * END *
index 2b74f72..9274b56 100644 (file)
@@ -15,14 +15,6 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
    {NULL, NULL}
 };
 
-static void *
-_efl_ui_box_list_data_get(const Eina_List *list)
-{
-   Evas_Object_Box_Option *opt = eina_list_data_get(list);
-
-   return opt->obj;
-}
-
 static void
 _child_added_cb_proxy(void *data, const Efl_Event *event)
 {
@@ -41,66 +33,6 @@ _child_removed_cb_proxy(void *data, const Efl_Event *event)
    efl_event_callback_legacy_call(box, EFL_CONTAINER_EVENT_CONTENT_REMOVED, child);
 }
 
-EOLIAN static Eina_Bool
-_efl_ui_box_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Efl_Ui_Box_Data *_pd EINA_UNUSED)
-{
-   return EINA_TRUE;
-}
-
-EOLIAN static Eina_Bool
-_efl_ui_box_elm_widget_focus_next(Eo *obj, Efl_Ui_Box_Data *_pd EINA_UNUSED, Elm_Focus_Direction dir, Evas_Object **next, Elm_Object_Item **next_item)
-{
-   const Eina_List *items;
-   void *(*list_data_get)(const Eina_List *list);
-
-   /* Focus chain */
-   /* TODO: Change this to use other chain */
-   if ((items = elm_obj_widget_focus_custom_chain_get(obj)))
-     list_data_get = eina_list_data_get;
-   else
-     {
-        ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-        Evas_Object_Box_Data *bd =
-              evas_object_smart_data_get(wd->resize_obj);
-
-        items = bd->children;
-        list_data_get = _efl_ui_box_list_data_get;
-
-        if (!items) return EINA_FALSE;
-     }
-
-   return elm_widget_focus_list_next_get(obj, items, list_data_get, dir, next, next_item);
-}
-
-EOLIAN static Eina_Bool
-_efl_ui_box_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Efl_Ui_Box_Data *_pd EINA_UNUSED)
-{
-   return EINA_TRUE;
-}
-
-EOLIAN static Eina_Bool
-_efl_ui_box_elm_widget_focus_direction(Eo *obj EINA_UNUSED, Efl_Ui_Box_Data *_pd EINA_UNUSED, const Evas_Object *base, double degree, Evas_Object **direction, Elm_Object_Item **direction_item, double *weight)
-{
-   const Eina_List *items;
-   void *(*list_data_get)(const Eina_List *list);
-
-   if ((items = elm_obj_widget_focus_custom_chain_get(obj)))
-     list_data_get = eina_list_data_get;
-   else
-     {
-        ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-        Evas_Object_Box_Data *bd =
-              evas_object_smart_data_get(wd->resize_obj);
-
-        items = bd->children;
-        list_data_get = _efl_ui_box_list_data_get;
-
-        if (!items) return EINA_FALSE;
-     }
-   return elm_widget_focus_list_direction_get
-         (obj, base, items, list_data_get, degree, direction, direction_item, weight);
-}
-
 static void
 _sizing_eval(Evas_Object *obj, Efl_Ui_Box_Data *sd)
 {
@@ -226,10 +158,10 @@ _efl_ui_box_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Box_Data *sd)
 EOLIAN static Eo *
 _efl_ui_box_efl_object_constructor(Eo *obj, Efl_Ui_Box_Data *pd)
 {
-   efl_access_type_set(obj, EFL_ACCESS_TYPE_SKIPPED);
    obj = efl_constructor(efl_super(obj, MY_CLASS));
    efl_canvas_object_type_set(obj, MY_CLASS_NAME);
    evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
+   efl_access_type_set(obj, EFL_ACCESS_TYPE_SKIPPED);
    efl_access_role_set(obj, EFL_ACCESS_ROLE_FILLER);
 
    pd->align.h = 0.5;
index 1e308bd..a5d92a2 100644 (file)
@@ -629,6 +629,15 @@ _efl_ui_progressbar_efl_access_value_value_and_text_get(Eo *obj EINA_UNUSED, Efl
    if (value) *value = _pd->val;
 }
 
+//TIZEN_ONLY(20160603): added description_get API
+EOLIAN static const char*
+_efl_ui_progressbar_efl_access_description_get(Eo *obj, Efl_Ui_Progressbar_Data *pd EINA_UNUSED)
+{
+    const char *ret = elm_object_part_text_get(obj, "elm.text.status");
+    return ret ? strdup(ret) : NULL;
+}
+//
+
 #include "efl_ui_progressbar_part.eo.c"
 
 /* Efl.Part end */
@@ -780,15 +789,6 @@ elm_progressbar_unit_format_function_set(Evas_Object *obj, progressbar_func_type
                         _format_legacy_to_format_eo_free_cb);
 }
 
-//TIZEN_ONLY(20160603): added description_get API
-EOLIAN static const char*
-_efl_ui_progressbar_efl_access_description_get(Eo *obj, Efl_Ui_Progressbar_Data *pd EINA_UNUSED)
-{
-    const char *ret = elm_object_part_text_get(obj, "elm.text.status");
-    return ret ? strdup(ret) : NULL;
-}
-//
-
 EAPI void
 elm_progressbar_span_size_set(Evas_Object *obj, Evas_Coord size)
 {
index b06a2a8..0d860f4 100644 (file)
@@ -569,7 +569,7 @@ _elm_win_apply_alpha(Eo *obj, Efl_Ui_Win_Data *sd)
      }
 }
 
-static Eina_Bool
+static void
 _elm_win_state_eval(void *data EINA_UNUSED)
 {
    Eina_List *l;
@@ -671,7 +671,6 @@ _elm_win_state_eval(void *data EINA_UNUSED)
           }
      }
    _win_noblank_eval();
-   return EINA_FALSE;
 }
 
 static Eina_Bool
@@ -1793,9 +1792,9 @@ _elm_win_state_change(Ecore_Evas *ee)
    // TIZEN_ONLY(20150707): elm_conform for wayland, and signal if parts are changed
 #ifdef HAVE_ELEMENTARY_WL2
    int x = 0, y = 0, w = 0, h = 0;
-   if (sd->indmode != (Elm_Win_Indicator_Mode)ecore_wl2_window_indicator_state_get(sd->wl.win))
+   if (sd->legacy.indmode != (Elm_Win_Indicator_Mode)ecore_wl2_window_indicator_state_get(sd->wl.win))
      {
-        sd->indmode = (Elm_Win_Indicator_Mode)ecore_wl2_window_indicator_state_get(sd->wl.win);
+        sd->legacy.indmode = (Elm_Win_Indicator_Mode)ecore_wl2_window_indicator_state_get(sd->wl.win);
         ch_conformant = EINA_TRUE;
 
      }
@@ -3619,7 +3618,7 @@ _elm_win_wlwin_type_update(Efl_Ui_Win_Data *sd)
       case ELM_WIN_COMBO:
       case ELM_WIN_MENU:
       case ELM_WIN_POPUP_MENU:
-        wtype = ECORE_WL2_WI// TIZEN_ONLY(20150722):NDOW_TYPE_MENU;
+        wtype = ECORE_WL2_WINDOW_TYPE_MENU;
         break;
       case ELM_WIN_DND:
         wtype = ECORE_WL2_WINDOW_TYPE_DND;
index db29d25..54f647a 100644 (file)
@@ -22,6 +22,11 @@ typedef struct
    //
 } Efl_Ui_Win_Socket_Data;
 
+//TIZEN_ONLY(20170613) -listen if access mode is enabled
+#define EFL_UI_WIN_SOCKET_DATA_GET(o, sd) \
+   Efl_Ui_Win_Socket_Data * sd = efl_data_scope_get(o, MY_CLASS)
+//
+
 EOLIAN static Efl_Object *
 _efl_ui_win_socket_efl_object_finalize(Eo *obj, Efl_Ui_Win_Socket_Data *pd EINA_UNUSED)
 {
@@ -44,7 +49,7 @@ _efl_ui_win_socket_socket_listen(Eo *obj, Efl_Ui_Win_Socket_Data *pd EINA_UNUSED
    if (!ecore_evas_extn_socket_listen(ee, svcname, svcnum, svcsys))
      return EINA_FALSE;
 
-   if (_elm_config->atspi_mode)
+   if (_elm_atspi_enabled())
      {
         if (pd->socket_proxy)
           efl_unref(pd->socket_proxy);
@@ -56,27 +61,56 @@ _efl_ui_win_socket_socket_listen(Eo *obj, Efl_Ui_Win_Socket_Data *pd EINA_UNUSED
    //
 }
 
+//TIZEN_ONLY(20170613) -listen if access mode is enabled
+void
+_access_socket_proxy_listen(Eo * obj)
+{
+   EFL_UI_WIN_SOCKET_DATA_GET(obj, sd);
+   const char *plug_id;
+
+   if ((plug_id = evas_object_data_get(obj, "___PLUGID")) != NULL)
+     {
+        char *svcname, *svcnum;
+        if (!sd->socket_proxy && _elm_atspi_bridge_plug_id_split(plug_id, &svcname, &svcnum))
+          {
+             sd->socket_proxy = _elm_atspi_bridge_utils_proxy_create(obj, svcname, atoi(svcnum), ELM_ATSPI_PROXY_TYPE_SOCKET);
+             elm_atspi_bridge_utils_proxy_listen(sd->socket_proxy);
+             free(svcname);
+             free(svcnum);
+          }
+     }
+}
+
+
+void
+_access_socket_proxy_unref(Eo * obj)
+{
+   EFL_UI_WIN_SOCKET_DATA_GET(obj, sd);
+   if (sd->socket_proxy)
+     {
+        efl_unref(sd->socket_proxy);
+        sd->socket_proxy = NULL;
+     }
+}
+//
+
 //TIZEN_ONLY(20171108): make atspi_proxy work
 EOLIAN static void
-_efl_ui_win_socket_efl_gfx_visible_set(Eo *obj, Efl_Ui_Win_Socket_Data *sd, Eina_Bool vis)
+_efl_ui_win_socket_efl_gfx_visible_set(Eo *obj, Efl_Ui_Win_Socket_Data *sd EINA_UNUSED, Eina_Bool vis)
 {
    efl_gfx_visible_set(efl_super(obj, EFL_UI_WIN_SOCKET_CLASS), vis);
 
-   const char *plug_id_2;
+   // TIZEN_ONLY(20160705) - enable atspi_proxy to work
    if (vis)
      {
-        if ((plug_id_2 = evas_object_data_get(obj, "___PLUGID")) != NULL)
+        if (_elm_atspi_enabled())
           {
-             char *svcname, *svcnum;
-             if (!sd->socket_proxy && _elm_atspi_bridge_plug_id_split(plug_id_2, &svcname, &svcnum))
-               {
-                  sd->socket_proxy = _elm_atspi_bridge_utils_proxy_create(obj, svcname, atoi(svcnum), ELM_ATSPI_PROXY_TYPE_SOCKET);
-                  elm_atspi_bridge_utils_proxy_listen(sd->socket_proxy);
-                  free(svcname);
-                  free(svcnum);
-               }
+             //TIZEN_ONLY(20170613) -listen if atspi is enabled
+             _access_socket_proxy_listen(obj);
+             //
           }
      }
+   //
 }
 
 EOLIAN static Eo*
index 654d85d..78196ac 100644 (file)
@@ -1891,6 +1891,20 @@ _elm_popup_elm_widget_screen_reader(Eo *obj, Elm_Popup_Data *_pd EINA_UNUSED, Ei
    evas_object_smart_callback_call(obj, SIG_ATSPI_SCREEN_READER_CHANGED, &is_screen_reader);
    //
 }
+
+EOLIAN static void
+_elm_popup_elm_widget_atspi(Eo *obj, Elm_Popup_Data *_pd EINA_UNUSED, Eina_Bool is_atspi)
+{
+   Efl_Access_State_Set ss;
+
+   if (!is_atspi) return;
+
+   ss = efl_access_state_set_get(obj);
+   if (STATE_TYPE_GET(ss, EFL_ACCESS_STATE_SHOWING))
+     {
+        efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_SHOWING, EINA_TRUE);
+     }
+}
 //
 //
 
index 55cfa4d..db1c477 100644 (file)
@@ -6359,7 +6359,7 @@ _elm_atspi_bridge_key_filter(void *data, void *loop EINA_UNUSED, int type, void
 
         EINA_LIST_FOREACH(children, l, child)
           {
-             if (elm_widget_focus_get(child)) break;
+             if (efl_ui_focus_object_focus_get(child)) break;
           }
         eina_list_free(children);
 
index d6cb864..6b4a886 100644 (file)
@@ -24,23 +24,21 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
 };
 
 static void
-_focus_order_flush(Eo *obj, Elm_Box_Data *pd EINA_UNUSED)
+_elm_box_efl_ui_focus_composition_prepare(Eo *obj, Elm_Box_Data *pd EINA_UNUSED)
 {
+   Eina_List *n, *nn;
+   Elm_Widget *elem;
+
    Elm_Widget_Smart_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
-   if (wpd->focus.manager)
-     {
-        Eina_List *order = evas_object_box_children_get(wpd->resize_obj);
+   Eina_List *order = evas_object_box_children_get(wpd->resize_obj);
 
-        efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
-        eina_list_free(order);
+   EINA_LIST_FOREACH_SAFE(order, n, nn, elem)
+     {
+        if (!efl_isa(elem, ELM_WIDGET_CLASS))
+          order = eina_list_remove(order, elem);
      }
-}
 
-static void *
-_elm_box_list_data_get(const Eina_List *list)
-{
-   Evas_Object_Box_Option *opt = eina_list_data_get(list);
-   return opt->obj;
+   efl_ui_focus_composition_elements_set(obj, order);
 }
 
 static void
index d2b6c20..fdfba90 100644 (file)
@@ -528,6 +528,7 @@ void                 _elm_win_access(Eina_Bool is_access);
 //TIZEN_ONLY(20160822): When atspi mode is dynamically switched on/off,
 //register/unregister access objects accordingly.
 void                 _elm_win_screen_reader(Eina_Bool is_screen_reader);
+void                 _elm_win_atspi(Eina_Bool is_atspi);
 //
 void                 _elm_win_translate(void);
 void                 _elm_win_focus_reconfigure(void);
@@ -719,6 +720,10 @@ void                 elm_atspi_bridge_utils_proxy_listen(Eo *proxy);
 void                 elm_atspi_bridge_utils_proxy_connect(Eo *proxy);
 void                 elm_atspi_bridge_utils_proxy_offset_set(Eo *proxy, int x, int y);
 Eina_Bool            _elm_atspi_bridge_plug_id_split(const char *plug_id, char **bus, char **path);
+//TIZEN_ONLY(20170621) handle atspi proxy connection at runtime
+void                 _access_socket_proxy_listen(Eo * obj);
+void                 _access_socket_proxy_unref(Eo * obj);
+//
 //
 /* end of DEPRECATED */
 
index 8674a54..f9f41ae 100644 (file)
@@ -4131,12 +4131,14 @@ _elm_toolbar_elm_interface_scrollable_content_pos_set(Eo *obj EINA_UNUSED, Elm_T
           if (parent == obj)
             break;
      }
+/*TIZEN_ONLY(20171222): fix build error temporarly
    else if (efl_isa(highlighted_obj, EDJE_OBJECT_CLASS))
      {
         while ((parent = evas_object_smart_parent_get(parent)))
           if (parent == obj)
             break;
      }
+*/
    else
      {
         WRN("Improper highlighted object: %p", highlighted_obj);
index 9c5ce87..c276232 100644 (file)
@@ -2925,7 +2925,7 @@ elm_widget_screen_reader(Evas_Object *obj,
         if (elm_widget_is(child))
           ret &= elm_widget_screen_reader(child, is_screen_reader);
      }
-   elm_obj_widget_screen_reader(obj, is_screen_reader);
+   efl_ui_widget_screen_reader(obj, is_screen_reader);
 
    return ret;
 }
@@ -2936,6 +2936,33 @@ _elm_widget_screen_reader(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_U
 }
 //
 
+//TIZEN_ONLY(20170621) handle atspi proxy connection at runtime
+EAPI Eina_Bool
+elm_widget_atspi(Evas_Object *obj, Eina_Bool is_atspi)
+{
+   Eina_List *l, *children;
+   Evas_Object *child;
+   Eina_Bool ret = EINA_TRUE;
+
+   API_ENTRY return EINA_FALSE;
+   children = efl_access_children_get(obj);
+   EINA_LIST_FOREACH(children, l, child)
+     {
+        ret &= elm_widget_atspi(child, is_atspi);
+     }
+   efl_ui_widget_atspi(obj, is_atspi);
+
+   return ret;
+}
+
+EOLIAN static void
+_elm_widget_atspi(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED, Eina_Bool is_atspi EINA_UNUSED)
+{
+}
+//
+//
+//
+
 EAPI Elm_Theme *
 elm_widget_theme_get(const Evas_Object *obj)
 {
@@ -5488,54 +5515,6 @@ _elm_widget_efl_access_name_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED)
    return _elm_widget_accessible_plain_name_get(obj, ret);
 }
 
-//TIZEN_ONLY(20161111) add widget/widget_item description get/set
-EOLIAN void
-_elm_widget_efl_access_description_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data* _pd, const char *description)
-{
-   if (_pd->description)
-     eina_stringshare_del(_pd->description);
-
-   _pd->description = eina_stringshare_add(description);
-}
-
-EOLIAN static const char*
-_elm_widget_efl_access_description_get(Eo *obj, Elm_Widget_Smart_Data *_pd)
-{
-   const char *desc = NULL;
-   desc = efl_access_description_get(efl_super(obj, ELM_WIDGET_CLASS));
-   if (desc) return desc;
-
-#ifdef HAVE_GETTEXT
-   if (_pd->atspi_translation_domain)
-     return dgettext(_pd->atspi_translation_domain, _pd->description);
-#endif
-   return _pd->description;
-}
-
-EOLIAN void
-_elm_widget_item_efl_access_description_set(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data* _pd, const char *description)
-{
-   if (_pd->description)
-     eina_stringshare_del(_pd->description);
-
-   _pd->description = eina_stringshare_add(description);
-}
-
-EOLIAN const char*
-_elm_widget_item_efl_access_description_get(Eo *obj, Elm_Widget_Item_Data *_pd)
-{
-   const char *desc = NULL;
-   desc = efl_access_description_get(efl_super(obj, ELM_WIDGET_ITEM_CLASS));
-   if (desc) return desc;
-
-#ifdef HAVE_GETTEXT
-   if (_pd->atspi_translation_domain)
-     return dgettext(_pd->atspi_translation_domain, _pd->description);
-#endif
-   return _pd->description;
-}
-//
-
 //TIZEN_ONLY(20171108): make atspi_proxy work
 static void
 _proxy_widget_move_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
@@ -5639,6 +5618,58 @@ _on_ewk_del(void *data, const Efl_Event *desc EINA_UNUSED)
 }
 //
 
+//TIZEN_ONLY(20170621) handle atspi proxy connection at runtime
+static Eo *
+_plug_type_proxy_get(Eo *obj, Evas_Object *widget)
+{
+   Eo *proxy = NULL;
+   const char *plug_id;
+   char *svcname, *svcnum;
+
+   if ((plug_id = evas_object_data_get(widget, "___PLUGID")) != NULL)
+     {
+        // TIZEN_ONLY(20160930) : endless recursion fix
+        efl_access_attribute_append(efl_super(obj, MY_CLASS), "___PlugID", plug_id);
+
+        proxy = evas_object_data_get(widget, "__widget_proxy");
+        if (proxy) return proxy;
+
+        if (_elm_atspi_bridge_plug_id_split(plug_id, &svcname, &svcnum))
+          {
+             proxy = _elm_atspi_bridge_utils_proxy_create(obj, svcname, atoi(svcnum), ELM_ATSPI_PROXY_TYPE_PLUG);
+             evas_object_data_set(widget, "__widget_proxy", proxy);
+             efl_event_callback_add(widget, EFL_EVENT_DEL, _on_widget_del, proxy);
+             efl_event_callback_add(proxy, ELM_ATSPI_PROXY_EVENT_CONNECTED, _on_proxy_connected_cb, widget);
+             elm_atspi_bridge_utils_proxy_connect(proxy);
+             free(svcname);
+             free(svcnum);
+          }
+     }
+
+   return proxy;
+}
+
+EAPI Eo *
+elm_widget_atspi_plug_type_proxy_get(Evas_Object *obj)
+{
+   Elm_Widget_Smart_Data *wd;
+   Evas_Object *widget;
+   Eina_List *l;
+
+   wd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
+   if (!wd) return NULL;
+
+   Eo *proxy = NULL;
+   EINA_LIST_FOREACH(wd->subobjs, l, widget)
+     {
+        if (evas_object_data_get(widget, "___PLUGID"))
+           proxy = _plug_type_proxy_get(obj, widget);
+        if (proxy) break;
+     }
+   return proxy;
+}
+//
+
 EOLIAN static Eina_List*
 _elm_widget_efl_access_children_get(Eo *obj, Elm_Widget_Smart_Data *pd)
 {
@@ -5660,6 +5691,7 @@ _elm_widget_efl_access_children_get(Eo *obj, Elm_Widget_Smart_Data *pd)
              elm_atspi_ewk_wrapper_a11y_init(obj, widget);
           }
      }
+   Eo *proxy = NULL;
    EINA_LIST_FOREACH(pd->subobjs, l, widget)
      {
         // TIZEN_ONLY(20160824): Do not append a child, if its accessible parent is different with widget parent
@@ -5668,34 +5700,19 @@ _elm_widget_efl_access_children_get(Eo *obj, Elm_Widget_Smart_Data *pd)
              parent = efl_access_parent_get(widget);
              if (parent && (parent != obj)) continue;
           }
-        //TIZEN_ONLY(20171108): make atspi_proxy work
-        const char *plug_id_2;
-        if ((plug_id_2 = evas_object_data_get(widget, "___PLUGID")) != NULL)
+        // TIZEN_ONLY(20160705) - enable atspi_proxy to work
+        /* This assumes that only one proxy exists in obj */
+        if (!proxy)
           {
-             Eo *proxy;
-             char *svcname, *svcnum;
-
-             proxy = evas_object_data_get(widget, "__widget_proxy");
+             proxy = _plug_type_proxy_get(obj, widget);
              if (proxy)
                {
                   accs = eina_list_append(accs, proxy);
                   continue;
                }
-
-             if (_elm_atspi_bridge_plug_id_split(plug_id_2, &svcname, &svcnum))
-               {
-                  proxy = _elm_atspi_bridge_utils_proxy_create(obj, svcname, atoi(svcnum), ELM_ATSPI_PROXY_TYPE_PLUG);
-                  evas_object_data_set(widget, "__widget_proxy", proxy);
-                  efl_event_callback_add(widget, EFL_EVENT_DEL, _on_widget_del, proxy);
-                  efl_event_callback_add(proxy, ELM_ATSPI_PROXY_EVENT_CONNECTED,  _on_proxy_connected_cb, widget);
-                  elm_atspi_bridge_utils_proxy_connect(proxy);
-                  accs = eina_list_append(accs, proxy);
-                  free(svcname);
-                  free(svcnum);
-               }
-             continue;
           }
         //
+        // TIZEN ONLY - END
         if (!elm_object_widget_check(widget)) continue;
         if (!efl_isa(widget, EFL_ACCESS_MIXIN)) continue;
         type = efl_access_type_get(widget);
@@ -6586,6 +6603,92 @@ _acceptable_child_is(Eo *obj)
    return EINA_TRUE;
 }
 
+static int _sort_by_size(const void *data1, const void *data2)
+{
+   Evas_Coord w, h;
+   Evas_Coord w2, h2;
+
+   evas_object_geometry_get(data1, NULL, NULL, &w, &h);
+   evas_object_geometry_get(data2, NULL, NULL, &w2, &h2);
+
+   if ((w * h) > (w2 * h2)) return 1;
+   return -1;
+}
+
+Eina_Bool
+_elm_widget_atspi_role_acceptable_check(Eo *obj)
+{
+   Efl_Access_Role role;
+   role = efl_access_role_get(obj);
+
+   switch (role)
+     {
+       case EFL_ACCESS_ROLE_APPLICATION:
+       case EFL_ACCESS_ROLE_FILLER:
+       case EFL_ACCESS_ROLE_SCROLL_PANE:
+       case EFL_ACCESS_ROLE_SPLIT_PANE:
+       case EFL_ACCESS_ROLE_WINDOW:
+       case EFL_ACCESS_ROLE_IMAGE:
+       case EFL_ACCESS_ROLE_LIST:
+       case EFL_ACCESS_ROLE_ICON:
+       case EFL_ACCESS_ROLE_TOOL_BAR:
+       case EFL_ACCESS_ROLE_REDUNDANT_OBJECT:
+       case EFL_ACCESS_ROLE_COLOR_CHOOSER:
+       case EFL_ACCESS_ROLE_TREE_TABLE:
+       case EFL_ACCESS_ROLE_PAGE_TAB_LIST:
+       case EFL_ACCESS_ROLE_PAGE_TAB:
+       case EFL_ACCESS_ROLE_SPIN_BUTTON:
+       case EFL_ACCESS_ROLE_INPUT_METHOD_WINDOW:
+       case EFL_ACCESS_ROLE_EMBEDDED:
+       case EFL_ACCESS_ROLE_INVALID:
+       case EFL_ACCESS_ROLE_NOTIFICATION:
+         return EINA_FALSE;
+       default:
+         break;
+     }
+
+   return EINA_TRUE;
+}
+
+static Eo *
+_child_object_at_point_get(Eo *obj, int x, int y)
+{
+   Eina_List *l, *l_next, *children, *valid_children = NULL;
+   Eo *child;
+   Eo *target;
+   int count;
+
+   children = efl_access_children_get(obj);
+
+   EINA_LIST_FOREACH(children, l, child)
+     {
+        if (_is_inside(child, x, y))
+          valid_children = eina_list_append(valid_children, child);
+     }
+
+   EINA_LIST_FOREACH_SAFE(valid_children, l, l_next, child)
+     {
+        children = efl_access_children_get(child);
+
+        /* do not use unacceptable leaf node */
+        if (!_elm_widget_atspi_role_acceptable_check(child) &&
+            eina_list_count(children) == 0)
+          valid_children = eina_list_remove_list(valid_children, l);
+     }
+
+   count = eina_list_count(valid_children);
+   if (count > 0)
+     {
+        valid_children = eina_list_sort(valid_children, -1, _sort_by_size);
+        target = eina_list_nth(valid_children, 0);
+
+        return _child_object_at_point_get(target, x, y);
+     }
+
+   return obj;
+}
+
+
 static Eo *
 _accessible_at_point_top_down_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, Eina_Bool screen_coords, int x, int y)
 {
@@ -6722,6 +6825,22 @@ static int _sort_by_repeat_events(const void *data1, const void *data2)
    return -1;
 }
 
+static Eo *_item_at_point_get(Evas_Object *obj, int x, int y)
+{
+   Eo *child;
+   Eina_List *l, *children;
+
+   children = efl_access_children_get(obj);
+
+   EINA_LIST_FOREACH(children, l, child)
+     {
+        if (_is_inside(child, x, y)) return child;
+     }
+
+   ERR("No child at point (%d, %d) on object %p", x, y, obj);
+   return NULL;
+}
+
 //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
 EOLIAN static Eo *
 _elm_widget_efl_access_component_accessible_at_point_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, Eina_Bool screen_coords, int x, int y)
@@ -6753,6 +6872,7 @@ _elm_widget_efl_access_component_accessible_at_point_get(Eo *obj, Elm_Widget_Sma
              if (efl_isa(smart_parent, EFL_ACCESS_MIXIN))
                {
                   Eina_Bool acceptable = EINA_FALSE;
+                  Eo *item_child;
 
                   Efl_Access_Role role;
                   role = efl_access_role_get(smart_parent);
@@ -6765,7 +6885,16 @@ _elm_widget_efl_access_component_accessible_at_point_get(Eo *obj, Elm_Widget_Sma
                        case EFL_ACCESS_ROLE_WINDOW:
                          DBG("Go for parent: %s (%p)\n", evas_object_type_get(smart_parent), smart_parent);
                          break;
-
+                       case EFL_ACCESS_ROLE_LIST:
+                           item_child = _item_at_point_get(smart_parent, x, y);
+    #ifdef TIZEN_PROFILE_WEARABLE
+                             {
+                                item_child = _child_object_at_point_get(item_child, x, y);
+                                return item_child;
+                             }
+    #endif
+                           return item_child;
+                         break;
                        default:
                          acceptable = EINA_TRUE;
                          break;
@@ -6779,7 +6908,7 @@ _elm_widget_efl_access_component_accessible_at_point_get(Eo *obj, Elm_Widget_Sma
      }
 
    eina_list_free(stack);
-   return NULL;
+   return _accessible_at_point_top_down_get(obj, _pd, screen_coords, x, y);
 }
 // TIZEN_ONLY(20171114) Accessibility Highlight Frame added
 // EOLIAN static Eina_Bool
index d22b0cb..6bab414 100644 (file)
@@ -246,7 +246,15 @@ abstract Elm.Widget (Efl.Canvas.Group, Efl.Access,
          legacy: null;
       }
       //
-
+      //TIZEN_ONLY(20170621) handle atspi proxy connection at runtime
+      atspi {
+         [['Virtual' function on the widget being set atspi.]]
+         params {
+            @in is_atspi: bool;
+         }
+         legacy: null;
+      }
+      //
       /* Internal hooks. */
       widget_sub_object_add @protected {
          [[Virtual function handling sub objects being added.
@@ -613,9 +621,6 @@ abstract Elm.Widget (Efl.Canvas.Group, Efl.Access,
       Efl.Canvas.Group.group_member_del;
       Efl.Canvas.Group.group_member_add;
       Efl.Access.name { get; }
-      //TIZEN_ONLY(20161111) add widget/widget_item description get/set
-      Efl.Access.description { get; set; }
-      //
       Efl.Access.state_set { get; }
       Efl.Access.children { get; }
       Efl.Access.parent { get; }
index 2bc5e0c..f98bbea 100644 (file)
@@ -541,9 +541,6 @@ class Elm.Widget.Item(Efl.Object, Efl.Access,
            Efl.Object.constructor;
            Efl.Object.destructor;
            Efl.Access.state_set { get; }
-           //TIZEN_ONLY(20161111) add widget/widget_item description get/set
-           Efl.Access.description { get; set; }
-           //
            Efl.Access.attributes { get; }
           //TIZEN_ONLY(20160726): add API elm_atspi_accessible_can_highlight_set/get
            Efl.Access.can_highlight { get; set; }