Closed
Bug 371680
Opened 17 years ago
Closed 17 years ago
Expose nsIAccessibleText::scrollSubstringTo
Categories
(Core :: Disability Access APIs, defect)
Core
Disability Access APIs
Tracking
()
RESOLVED
FIXED
People
(Reporter: surkov, Assigned: surkov)
References
Details
(Keywords: access)
Attachments
(1 file, 5 obsolete files)
35.06 KB,
patch
|
Details | Diff | Splinter Review |
Comment 1•17 years ago
|
||
Please see nsTextAccessibleWrap::scrollToSubstring() http://lxr.mozilla.org/seamonkey/source/accessible/src/msaa/nsTextAccessibleWrap.cpp#159 This particular IA2 method may be changed, to add parameters that specify how the scrolling will be done. However we probably won't know until some time in April.
Keywords: access
Assignee | ||
Comment 2•17 years ago
|
||
(In reply to comment #1) > This particular IA2 method may be changed, to add parameters that specify how > the scrolling will be done. However we probably won't know until some time in > April. > Ok, if it will be changed then I fix it.
Attachment #256786 -
Flags: review?(aaronleventhal)
Comment 3•17 years ago
|
||
Actually this code is based on a mistake I made. nsTextAccessible should not end up inheriting from nsHyperTextAccessible, because it's not a text container. It's a leaf. I believe we did that just because all text and image descendants of a link are marked with STATE_LINKED and possibly STATE_TRAVERSED, so we got that for free. We will need to file a bug to "nsTextAccessible should not be an nsHyperTextAccessible" and fix that carefully. In the mean time, you will have to either: 1) Reverse the changes to nsTextAccessibleWrap, and have some duplicated code 2) Find a different commonality between the 2 ScrollToSubstring impl's 3) Go up the ancestor chain until you find the first nsIAccessibleText, and use the scroll to substring on that (nsCaretAccessible does something similar to fire caret move events). You may not save much code with this methed, however. You'd have to recalculate the indices. Too much work.
Updated•17 years ago
|
Attachment #256786 -
Flags: review?(aaronleventhal)
Assignee | ||
Comment 4•17 years ago
|
||
(In reply to comment #3) > 3) Go up the ancestor chain until you find the first nsIAccessibleText, and use > the scroll to substring on that (nsCaretAccessible does something similar to > fire caret move events). You may not save much code with this methed, however. > You'd have to recalculate the indices. Too much work. > I wonder how should I change aStartIndex/aEndIndex to pass them to parent nsIAccesibleText? Also, how to implement scrollToSubstring on hypertext, should it be something similiar you do in patch for bug 366438, i.e. to run through accessible nodes only?
Comment 5•17 years ago
|
||
> I wonder how should I change aStartIndex/aEndIndex to pass them to parent nsIAccesibleText? Look at how nsIAccessibleHyperlink gets the start index for the current link. It's basically the same logic. > Also, how to implement scrollToSubstring on hypertext, should > it be something similiar you do in patch for bug 366438, i.e. to run > through accessible nodes only? Can you explain more?
Assignee | ||
Comment 6•17 years ago
|
||
note for me: don't forget to use clickable (linkable) accessbile instead hyper text in nsAccessibilityService::GetAccessible if node has @click attribute (http://lxr.mozilla.org/mozilla/source/accessible/src/base/nsAccessibilityService.cpp#1249)
Assignee | ||
Comment 7•17 years ago
|
||
Attachment #256786 -
Attachment is obsolete: true
Assignee | ||
Comment 8•17 years ago
|
||
Attachment #277091 -
Attachment is obsolete: true
Attachment #277213 -
Flags: superreview?(roc)
Attachment #277213 -
Flags: review?(roc)
Assignee | ||
Updated•17 years ago
|
Attachment #277213 -
Flags: review?(aaronleventhal)
Comment 9•17 years ago
|
||
Comment on attachment 277213 [details] [diff] [review] patch3 This isn't converting from hypertext offsets to content offsets. Also, the start offset could fall in one node, and the end offset could be in a different node. +NS_IMETHODIMP +nsHyperTextAccessible::ScrollSubstringTo(PRInt32 aStartIndex, PRInt32 aEndIndex, + PRUint32 aScrollType) +{ + return nsAccUtils::ScrollSubstringTo(GetFrame(), mDOMNode, + aStartIndex, aEndIndex, aScrollType); +} + Also, a nit: please rename ScrollSubstringTo -> ScrollToSubstring. How did you test?
Attachment #277213 -
Flags: review?(aaronleventhal) → review-
Assignee | ||
Comment 10•17 years ago
|
||
with aaron's recommendations
Attachment #277213 -
Attachment is obsolete: true
Attachment #277273 -
Flags: superreview?(roc)
Attachment #277273 -
Flags: review?(aaronleventhal)
Attachment #277213 -
Flags: superreview?(roc)
Attachment #277213 -
Flags: review?(roc)
Assignee | ||
Updated•17 years ago
|
Attachment #277273 -
Flags: review?(roc)
Assignee | ||
Comment 11•17 years ago
|
||
(In reply to comment #9) > Also, a nit: please rename ScrollSubstringTo -> ScrollToSubstring. Not sure it's correct because we scroll substring to some area of window specified by aScrollType. It's matched with IA2. > How did you test? > by simple js test.
Comment 12•17 years ago
|
||
Comment on attachment 277273 [details] [diff] [review] patch4 Surkov, I believe startFrame or endFrame may not be a text frame, in the case that the start or end offset land on an embedded object character. RenderedToContentOffset() probably returns a failure in that case. + nsresult rv = RenderedToContentOffset(startFrame, renderedStartOffset, + &startOffset); + NS_ENSURE_SUCCESS(rv, rv); ... n fact instead of |if (startOffset ==0)| you may want to make that conditional on if the frame is not a text frame. Then in the else you can call the RenderedToContentOffset().
Attachment #277273 -
Flags: review?(aaronleventhal) → review-
Assignee | ||
Comment 13•17 years ago
|
||
Attachment #277273 -
Attachment is obsolete: true
Attachment #277534 -
Flags: review?(aaronleventhal)
Attachment #277273 -
Flags: superreview?(roc)
Attachment #277273 -
Flags: review?(roc)
Comment 14•17 years ago
|
||
Comment on attachment 277534 [details] [diff] [review] patch5 Surkov, why is it sometimes called ScrollToSubstring() and other times called ScrollSubstringTo(). It should always just be ScrollToSubstring()
Comment 15•17 years ago
|
||
Comment on attachment 277534 [details] [diff] [review] patch5 Please don't forget to rename ScrollSubstringTo to ScrollToSubstring. The code looks right -- did you look at whether it's working correctly with different kinds of start and end points?
Attachment #277534 -
Flags: review?(aaronleventhal) → review+
Assignee | ||
Comment 16•17 years ago
|
||
(In reply to comment #14) > (From update of attachment 277534 [details] [diff] [review]) > Surkov, why is it sometimes called ScrollToSubstring() and other times called > ScrollSubstringTo(). It should always just be ScrollToSubstring() > Why (please see comment 11)? It should be always ScrollSubstringTo excepting MSAA one.
Assignee | ||
Updated•17 years ago
|
Attachment #277534 -
Flags: superreview?(roc)
Attachment #277534 -
Flags: review?(roc)
Assignee | ||
Comment 17•17 years ago
|
||
(In reply to comment #15) > The code looks right -- did you look at whether it's working correctly with > different kinds of start and end points? > I didn't do complex tests yet. But it scrolls substrings of simple text accessible into view. Just it would be fine to get kind of working code to get some platform to for further testing/fixing :).
Comment 18•17 years ago
|
||
Now I see comment 5. I'd rather have a consistent name, because you could also say the window is scrolling to show the substring. But it's okay with me either way, if you don't want to change it.
Assignee | ||
Comment 19•17 years ago
|
||
(In reply to comment #18) > Now I see comment 5. I'd rather have a consistent name, because you could also > say the window is scrolling to show the substring. But it's okay with me either > way, if you don't want to change it. > Really I just like to be consistent with IA2.
Comment on attachment 277534 [details] [diff] [review] patch5 - if (aEndFrame) { + if (aEndFrame) *aEndFrame = nsnull; - } - if (aBoundsRect) { + if (aBoundsRect) aBoundsRect->Empty(); - } Don't do this. I prefer to have braces around non-control-transfer single statements. I don't mind if you don't, but don't churn the code just for the sake of it.
Attachment #277534 -
Flags: superreview?(roc)
Attachment #277534 -
Flags: superreview+
Attachment #277534 -
Flags: review?(roc)
Attachment #277534 -
Flags: review+
Assignee | ||
Updated•17 years ago
|
Attachment #277534 -
Flags: approval1.9?
Assignee | ||
Comment 21•17 years ago
|
||
Do I need additional reviews for this bug before I land it?
Status: NEW → ASSIGNED
Comment on attachment 277534 [details] [diff] [review] patch5 you can go ahead and land this.
Attachment #277534 -
Flags: approval1.9? → approval1.9+
Assignee | ||
Updated•17 years ago
|
Summary: Expose nsIAccessibleText::scrollToSubstring → Expose nsIAccessibleText::scrollSubstringTo
Assignee | ||
Comment 23•17 years ago
|
||
checked in patch, updated to trunk, fixed roc's recommendations
Attachment #277534 -
Attachment is obsolete: true
Assignee | ||
Comment 24•17 years ago
|
||
checked in
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•