diff --git a/accessible/src/base/nsRootAccessible.cpp b/accessible/src/base/nsRootAccessible.cpp index 703b526704c6..e28f1feffd25 100644 --- a/accessible/src/base/nsRootAccessible.cpp +++ b/accessible/src/base/nsRootAccessible.cpp @@ -228,6 +228,8 @@ const char* const docEvents[] = { "ValueChange", // capture AlertActive events (fired whenever alert pops up) "AlertActive", + // add ourself as a TreeViewChanged listener (custom event fired in nsTreeBodyFrame.cpp) + "TreeViewChanged", // add ourself as a OpenStateChange listener (custom event fired in tree.xml) "OpenStateChange", // add ourself as a CheckboxStateChange listener (custom event fired in nsHTMLInputElement.cpp) @@ -566,6 +568,13 @@ NS_IMETHODIMP nsRootAccessible::HandleEvent(nsIDOMEvent* aEvent) return NS_OK; } + if (eventType.EqualsLiteral("TreeViewChanged")) { + NS_ENSURE_TRUE(localName.EqualsLiteral("tree"), NS_OK); + nsCOMPtr treeContent = do_QueryInterface(targetNode); + return mAccService->InvalidateSubtreeFor(eventShell, treeContent, + nsIAccessibleEvent::EVENT_REORDER); + } + nsCOMPtr accessible; if (NS_FAILED(mAccService->GetAccessibleInShell(targetNode, eventShell, getter_AddRefs(accessible)))) diff --git a/accessible/src/xul/nsXULTreeAccessible.cpp b/accessible/src/xul/nsXULTreeAccessible.cpp index 6e06858281a4..be70c1236db0 100644 --- a/accessible/src/xul/nsXULTreeAccessible.cpp +++ b/accessible/src/xul/nsXULTreeAccessible.cpp @@ -394,7 +394,10 @@ NS_IMETHODIMP nsXULTreeAccessible::GetCachedTreeitemAccessible(PRInt32 aRow, nsI NS_ASSERTION(mAccessNodeCache, "No accessibility cache for tree"); NS_ASSERTION(mTree && mTreeView, "Can't get mTree or mTreeView!\n"); - nsCOMPtr col = aColumn; + nsCOMPtr col; +#ifdef MOZ_ACCESSIBILITY_ATK + col = aColumn; +#endif PRInt32 columnIndex = -1; if (!col && mTree) { diff --git a/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp b/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp index 757cb89f20ea..c24da7b6d19c 100644 --- a/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp +++ b/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp @@ -517,6 +517,11 @@ NS_IMETHODIMP nsTreeBodyFrame::SetView(nsITreeView * aView) // necessarily entail a full invalidation of the tree. Invalidate(); + nsIContent *treeContent = GetBaseElement(); + if (treeContent) { + FireDOMEvent(NS_LITERAL_STRING("TreeViewChanged"), treeContent); + } + if (mView) { // Give the view a new empty selection object to play with, but only if it // doesn't have one already.