atspi: consider scrollable parent for "GetNeighbor" 65/137765/4
authorShinwoo Kim <cinoo.kim@samsung.com>
Fri, 7 Jul 2017 02:44:14 +0000 (11:44 +0900)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Tue, 11 Jul 2017 11:05:18 +0000 (11:05 +0000)
commitb2ff65aecbbf3cd6e6f471a831151ff9b3f3302a
tree29f923573da4b88f4e2c6007e9d7b84df762b5da
parentfa855a84ee39e2c5466ea7513a6db3a8de382f9d
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: I8ded2d533f0b77202be25713eafca652e1886bcb
src/lib/elm_atspi_bridge.c
src/lib/elm_widget.c