Previously, if an item changed geometry and it wasn't accessible, it
would find the closest accessible ancestor, and send an accessible
LocationChanged event to the closest accessible ancestor (but the
accessible ancestor didn't move, so it was pointless).
This also improves performance in some cases because there is no point
in traversing upwards in the hierarchy to find an accessible ancestor.
Therefore, the change contains both a benchmark and an autotest.
Performance summary
-------------------
moveItem(isActive) is 38.4x faster (72/8)/(60/256)
Details
-------
Config: Using QtTest library 6.9.0, Qt 6.9.0 (arm64-little_endian-lp64
shared (dynamic) release build; by Apple LLVM 15.0.0
(clang-1500.3.9.4)), macos 14.4
Without patch:
RESULT : tst_bench_accessibility::moveItem():"isActive":
9.0 msecs per iteration (total: 72, iterations: 8)
With patch:
RESULT : tst_bench_accessibility::moveItem():"isActive":
0.23 msecs per iteration (total: 60, iterations: 256)
Pick-to: 6.8
Change-Id: I1e3712ff043193705335a0e02ccbe876c915d8a4
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>