Closed Bug 404576 Opened 18 years ago Closed 17 years ago

Menus not available through AT-SPI Action:doAction

Categories

(Core :: Disability Access APIs, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: steve, Assigned: aaronlev)

Details

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b2pre) Gecko/2007111904 Minefield/3.0b2pre Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b2pre) Gecko/2007111904 Minefield/3.0b2pre Menus can't be opened using the atspi Action interface, even though they correctly expose it. Reproducible: Always Steps to Reproduce: 1.run Minefield & Accerciser 2.navigate down to the file menu item (in first toolbar, path = 1 14 0 0 3.open Action interface in Interface Viewer 4.select click, and Perform Action Actual Results: Nothing Expected Results: Menu pops up The menu appears a child elements of the menu but should appear in the popup window. For comparison Gail also has them as static children in the main tree as well as in the popup. I don't know if this is by design, but may be is as the menu disappears on any system focus/activation event which is mostly mouse for key actions (I'm using switch input which doesn't cause this). Toolbars work fine
nsXULElement::Click() is called, but it doesn't invoke nsMenuFrame::HandleEvent().
Status: UNCONFIRMED → NEW
Ever confirmed: true
Hi Ginn, I've been trying to work on a patch but I still have more questions than answers as only using code inspection with crashes and Mozilla is so new to me. I can see that I can simulate mouse clicks with HandleEvent once I get the right nsMenuFrame (can't see how exactly, but think I can can get the nsIPresShell, which is on the way). Any hints appreciated. However AFAIKS the call to DoCommand in XULMenu passes a NULL aContent (default param) so the mDOMNode is used which looks incorrect for Chrome. Then content is assigned an instance of nsQueryInterface with do_QueryInstance, yet the object and NOT it's address is passed as the timer closure and the callback then treats it as a nsIContent *. nsQueryInterface only defines operator (), so I can't see any implicit conversions. It seems to me this is dangerous as you are relying on the object's internal layout (it's sole member is a pointer) when doing the old style void* cast and then treating that as a pointer to something else. Or is this a common idiom in Mozilla? What am I missing? Am I getting too rusty with c++ after python?
Just bumping this
The patch that's currently in bug 410765 also fixes this bug.
fixed per comment #4
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
confirmed WFM
You need to log in before you can comment on or make changes to this bug.