Closed Bug 353293 Opened 18 years ago Closed 18 years ago

getCharacterExtentsCB is not called when caret browsing with magnifier open

Categories

(Core :: Disability Access APIs, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: evan.yan, Assigned: evan.yan)

References

Details

(Keywords: access, regression)

Attachments

(2 files)

this bug is seperated from bug 349860.

set breakpoint in gdb for the function, it is never hit when inputting or caret browsing with magnifier open.

I'm using gnopernicus 1.1.2.
It works on branch 1.8 with the same magnifier.
Assignee: nobody → aaronleventhal
Component: Disability Access → Disability Access APIs
Product: Firefox → Core
QA Contact: disability.access → accessibility-apis
Blocks: newatk
Keywords: access, sec508
Are we firing caret move events?
(In reply to comment #1)
> Are we firing caret move events?
> 
yes, after bug 349860 fixed, caret-move and text-change events are fired now.
Component: Disability Access APIs → Build Config
Product: Core → Firefox
Why is this a build config bug?
sorry, I didn't mean it. it was changed by accident.
Component: Build Config → Disability Access APIs
Product: Firefox → Core
Assignee: aaronleventhal → Evan.Yan
tested with orca, when inputting, getCharacterExtentsCB is called and magnifier works well; but when caret browsing, the function is never called, which makes magnifier not work.
Summary: getCharacterExtentsCB is not called when inputting or caret browsing with magnifier open → getCharacterExtentsCB is not called when caret browsing with magnifier open
It may be an issue of rich content vs. plain text.

For example, this is editing, but in rich text:
http://www.mozilla.org/editor/midasdemo/

Does getCharacterExtentsCB get called then?
(In reply to comment #6)
> http://www.mozilla.org/editor/midasdemo/
> 
> Does getCharacterExtentsCB get called then?
> 
yes, it's called. rich content seems not the point.
Attached file testcase
here is a python script, to call getCharacterExtentsCB when received a caret_moved event.

just run the testcase, then inputting or caret browsing in firefox. we can get the extent correctly.

Will, could you help to investigate this bug from Orca's side? to figure out what makes firefox not work with magnifier. 
Thanks a lot!
I just enabled caret browsing in a 25-Oct nightly of FF3.  With caret navigation enabled in FF3 and magnification on in Orca from GNOME CVS HEAD, Orca seems to track the caret just fine.  The only problems I see are:

1) If the caret is at the end of a line, text.getCharacterExtents for the caret returns (x=0, y=0, width=0, height=0).  I've not run across this in GTK+ apps (they return the area at the end of the line, I believe), so I'm not sure if this is a bug in Orca or Gecko.  I'll probably need add some more defensive code to Orca, though, to cover this situation -- right now, what ends up happening is that the region of interest jumps to (0, 0, 0, 0) when the user moves the caret to the end of a line.

2) It's my understanding that getting reliable caret navigation from Gecko is a lost cause.  As such, we are forced to write our own support in Orca to do caret navigation for Gecko and we will be updating the magnification region of interest via additional means.  Since the FF team seems rather keen on fixing this particular problem, though, maybe there is hope that someone will want to fix caret navigation in general?  It certainly would help eliminate the need to have every assistive technology write its own navigation code.

If you're interested, please look at the mag.py:magnifyAccessible method in orca/src/orca/mag.py for what we're doing to update the region of interest.  This will, of course, need to get a little more complex since we'll be doing our own caret navigation mechanism and cannot rely upon obj.text.caretOffset to be of any use.
Here's a sample test app for you. Hope it helps.
Thank you, Will!

I tried the latest version of orca and firefox, and it's OK. It must be the problem of that snapshot which I was testing.
Close as WORKSFORME.

About the problem of return (0, 0, 0, 0) at the end of a line, it's because getCharacterExtents returns the extent of the character AFTER the caret offset. When the caret is at the end of a line, there is no character after the caret, so (0, 0, 0, 0) will get returned.
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: