GNOME Bugzilla – Bug 394401
Mag review by character
Last modified: 2007-02-16 15:40:52 UTC
Magnifier tracking of review by character does not scroll in widgets that do not have a focal point based on the current character. This problem stems from the lack of an adapter that implements getAccVisualPoint for non-text box controls. The adapter should support characters in the names of objects with the text interface.
The DefaultInfo adapter logic for getAccVisualPoint needs to be extended. If self.char_offset is specified, it should check if the text interface is implemented. If it is, it should use the at-spi method getCharacterExtents like our TextAdapter (for multiline text) already does to compute the exact location of a character on the screen.
Created attachment 82543 [details] [review] patch for intermediate fix for Mag review by character
Created attachment 82548 [details] [review] patch for intermediate fix for Mag review by character
Created attachment 82554 [details] [review] fixes centering, invalid PORs Need feedback from Eitan about original logic in getDesiredFocalPoint in BasicMagPerk so we can restore the code that was working in there.
Eitan sent me a patch against HEAD with additional comments about what his original code was doing. He says the "prefer left" code is there so that controls longer than the width of the magnifier are focused to the left rather than at the center. This causes problems for containers, which are often wider but we do want them centered. Solutions include 1) using the height instead of the width to detect or 2) detecting the text interface and only moving to the left (or right) if present.
Final fix committed to svn. The part about shift the center to the left side of a widget larger than the widget of the screen is no longer needed. If the adapter for the current POR detects it supports the text interface, the focal point automatically falls on the first character (properly accounting for left to right or right to left languages). If it does not support text, it focuses on the center. This is the desired behavior in most situations. Either you want to read some text or you want to get an overview of the whole control.