atspi: "GetNeighbor" is using deputy object 88/167188/4
authorJunsuChoi <jsuya.choi@samsung.com>
Tue, 16 Jan 2018 05:50:52 +0000 (14:50 +0900)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Tue, 16 Jan 2018 06:14:28 +0000 (06:14 +0000)
commit04c39aab196c907765ae8dfcf0c9b93163b1641a
tree7d16b2fc409e631e678d9021b5c96536037cc098
parent00677432b16168df76a55ca7ae2236694c6726e7
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: I36dde39af3e99efcd7168c146b065fc6dfa5d104
src/lib/elementary/efl_ui_widget.c
src/lib/elementary/elm_atspi_bridge.c