atspi: "GetNeighbor" is using deputy object 57/134257/2
authorShinwoo Kim <cinoo.kim@samsung.com>
Thu, 15 Jun 2017 12:16:35 +0000 (21:16 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Wed, 28 Jun 2017 23:34:34 +0000 (23:34 +0000)
commit34d42a6109150a5a09c7a1aeb8542aeac816797b
tree482710f93ee7eb51439dfb0551eee8db3cf23c54
parent7082d08d3936b96755756d1bacfa320e2ac62bfd
atspi: "GetNeighbor" is using deputy object

A01 object is deputy object, and exists in embedding process.
A02, A03 object exist in embedding process.
B01, B02 objects exist in embedded process.

The “GetNeighbor” method should return A02 object as “next” object of B02,
and return B02 object as “prev” object of A02.
The “next” object of A01 is B01.
The “prev” object of B01 is A01.
This is default implementation.
The following is default order: A01 - B01 - B02 - A02 - A03

But more important thing is that the embedding process could use
ELM_ATSPI_RELATION_FLOWS_TO/FROM for each objects A01, A02, and A03.
So there are some cases should be considered.

(1) If A01 is ELM_ATSPI_RELATION_FLOWS_FROM object of A03, then the
   “GetNeighbor” should find B02 first when it navigates backward from A03.

(2) If A03 is ELM_ATSPI_RELATION_FLOWS_TO object of A01, then the
   “GetNeighbor” should find A03 first when it navigates backward from B02.

(3) Even though the A01 has ELM_ATSPI_RELATION_FLOWS_TO relation information,
   the “GetNeighbor” should find B01 first. Because the
   ELM_ATSPI_RELATION_FLOWS_TO object is used when “GetNeighbor” finds
   next object of B02.

Change-Id: Id9ec5762fb5abe94f942bf3823c69729e6389702
src/lib/elm_atspi_bridge.c
src/lib/elm_widget.c