[access] check whether hover object is visibile or not
authorShinwoo Kim <cinoo.kim@samsung.com>
Wed, 22 May 2013 12:48:31 +0000 (21:48 +0900)
committerSungho Kwak <sungho1.kwak@samsung.com>
Mon, 27 May 2013 05:17:37 +0000 (14:17 +0900)
Change-Id: I853b8f803090ca9a8f4c3dfc3d6f93f0f179a951

src/lib/elm_access.c
src/lib/elm_widget.c

index eb21f8e..88e4593 100644 (file)
@@ -990,6 +990,9 @@ _elm_access_object_hilight(Evas_Object *obj)
    o = evas_object_name_find(evas_object_evas_get(obj), "_elm_access_disp");
    if (!o)
      {
+        /* edje_object_add(); calls evas_event_feed_mouse_move();
+           and it calls _access_obj_mouse_in_cb(); again. */
+        _elm_access_mouse_event_enabled_set(EINA_FALSE);
         o = edje_object_add(evas_object_evas_get(obj));
         evas_object_name_set(o, "_elm_access_disp");
         evas_object_layer_set(o, ELM_OBJECT_LAYER_TOOLTIP);
index dd85991..22bf422 100644 (file)
@@ -2333,6 +2333,9 @@ elm_widget_focus_next_get(const Evas_Object *obj,
                           Elm_Focus_Direction dir,
                           Evas_Object **next)
 {
+   Elm_Access_Info *ac;
+   Evas_Object *clipper;
+
    if (!next)
      return EINA_FALSE;
    *next = NULL;
@@ -2383,7 +2386,18 @@ elm_widget_focus_next_get(const Evas_Object *obj,
    /* focusable object but does not have access info */
    if (_elm_config->access_mode)
      {
-        if (!_elm_access_object_get(obj)) return EINA_FALSE;
+        ac = _elm_access_object_get(obj);
+        if (!ac) return EINA_FALSE;
+
+        /* check whether the hover object is visible or not */
+        if (!evas_object_visible_get(ac->hoverobj)) return EINA_FALSE;
+
+        clipper = evas_object_clip_get(ac->hoverobj);
+        while (clipper)
+          {
+             if (!evas_object_visible_get(clipper)) return EINA_FALSE;
+             clipper = evas_object_clip_get(clipper);
+          }
      }
 
    if (elm_widget_focus_get(obj))