atspi: consider scrollable parent for "GetNeighbor" 21/167121/2
authorJunsuChoi <jsuya.choi@samsung.com>
Mon, 15 Jan 2018 11:42:17 +0000 (20:42 +0900)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Tue, 16 Jan 2018 02:32:15 +0000 (02:32 +0000)
commit84bb85b6b7e52ba541c372c2b8d790fab133a044
tree964c77be8dd0fb3d986b8472432b4aa620082cba
parente120a58a3e7be4a86dbdf20b051a09f0474997f9
atspi: consider scrollable parent for "GetNeighbor"

   To determine the next object,
   find top scrollable parent of next object excluding scrollable parents of start
   object, and check if the next object exists inside of the top scrollable parent
   viewport.

   If there is not top scrollable parent, then use the next object.

             (layout)
                 |
      |----------|----------|
      |          |          |
   (btn1)    (scroller)  (btn3)
                 |
                 |
      |----------|----------|
      |          |          |
   (btn2)    (genlist)   (toolbar)

   [case: top scrollable parent is scroller]
   If current highlighted(start) object is btn1, and the 10th genlist item shows
   just under the btn1 (i.e. btn2, and 1st ~ 9th items are scrolled out),
   then the next object should be the 10th item.

   [case: top scrollable parent is NULL]
   After the 10th genlist item grabs highlight, the previous object should be the
   9th genlist item, not the btn1. In this case scrollable paretns of start object
   are scroller, and genlist. the next object has same scrollable parents. So the
   top scrollable parent is NULL.

   If the 10th genlist item is the next object of btn1, then the btn1 object could
   be the previous object of 10th genlist. But this patch set make the 9th genlist
   item previous. This behavior is quite dependent on UX definition.

Change-Id: I37498e8cc044b53672de1d758943ed4acb202835
src/lib/elementary/efl_ui_widget.c
src/lib/elementary/elm_atspi_bridge.c