Returns proper node of type 9 for doc accessibles
git-svn-id: svn://10.0.0.236/branches/Accessible_052901_Branch4@96921 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -59,7 +59,7 @@ EXTERN_C GUID CDECL CLSID_Accessible =
|
||||
//-----------------------------------------------------
|
||||
// construction
|
||||
//-----------------------------------------------------
|
||||
Accessible::Accessible(nsIAccessible* aAcc, HWND aWnd): SimpleDOMNode(aAcc, aWnd)
|
||||
Accessible::Accessible(nsIAccessible* aAcc, nsIDOMNode* aNode, HWND aWnd): SimpleDOMNode(aAcc, aNode, aWnd)
|
||||
{
|
||||
mAccessible = aAcc; // The nsIAccessible we're proxying from
|
||||
|
||||
@@ -76,6 +76,7 @@ Accessible::Accessible(nsIAccessible* aAcc, HWND aWnd): SimpleDOMNode(aAcc, aWnd
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------
|
||||
// destruction
|
||||
//-----------------------------------------------------
|
||||
@@ -204,7 +205,7 @@ STDMETHODIMP Accessible::get_accParent( IDispatch __RPC_FAR *__RPC_FAR *ppdispPa
|
||||
mAccessible->GetAccParent(getter_AddRefs(parent));
|
||||
|
||||
if (parent) {
|
||||
IAccessible* a = new Accessible(parent, mWnd);
|
||||
IAccessible* a = new Accessible(parent, nsnull, mWnd);
|
||||
a->AddRef();
|
||||
*ppdispParent = a;
|
||||
return S_OK;
|
||||
@@ -255,7 +256,7 @@ STDMETHODIMP Accessible::get_accChild(
|
||||
}
|
||||
|
||||
// create a new one.
|
||||
IAccessible* ia = new Accessible(a, mWnd);
|
||||
IAccessible* ia = new Accessible(a, nsnull, mWnd);
|
||||
ia->AddRef();
|
||||
*ppdispChild = ia;
|
||||
return S_OK;
|
||||
@@ -405,7 +406,7 @@ STDMETHODIMP Accessible::get_accFocus(
|
||||
nsCOMPtr<nsIAccessible> focusedAccessible;
|
||||
if (NS_SUCCEEDED(mAccessible->GetAccFocused(getter_AddRefs(focusedAccessible)))) {
|
||||
pvarChild->vt = VT_DISPATCH;
|
||||
pvarChild->pdispVal = new Accessible(focusedAccessible, mWnd);
|
||||
pvarChild->pdispVal = new Accessible(focusedAccessible, nsnull, mWnd);
|
||||
pvarChild->pdispVal->AddRef();
|
||||
return S_OK;
|
||||
}
|
||||
@@ -528,7 +529,7 @@ STDMETHODIMP Accessible::accNavigate(
|
||||
}
|
||||
|
||||
if (acc) {
|
||||
IAccessible* a = new Accessible(acc,mWnd);
|
||||
IAccessible* a = new Accessible(acc, nsnull, mWnd);
|
||||
a->AddRef();
|
||||
pvarEndUpAt->vt = VT_DISPATCH;
|
||||
pvarEndUpAt->pdispVal = a;
|
||||
@@ -563,7 +564,7 @@ STDMETHODIMP Accessible::accHitTest(
|
||||
pvarChild->lVal = CHILDID_SELF;
|
||||
} else { // its not create an Accessible for it.
|
||||
pvarChild->vt = VT_DISPATCH;
|
||||
pvarChild->pdispVal = new Accessible(a, mWnd);
|
||||
pvarChild->pdispVal = new Accessible(a, nsnull, mWnd);
|
||||
pvarChild->pdispVal->AddRef();
|
||||
}
|
||||
} else {
|
||||
@@ -704,7 +705,7 @@ DocAccessible::Release(void)
|
||||
}
|
||||
|
||||
|
||||
DocAccessible::DocAccessible(nsIAccessible* aAcc, HWND aWnd):Accessible(aAcc,aWnd)
|
||||
DocAccessible::DocAccessible(nsIAccessible* aAcc, nsIDOMNode *aNode, HWND aWnd):Accessible(aAcc,aNode,aWnd)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -821,8 +822,9 @@ RootAccessible::Release(void)
|
||||
return DocAccessible::Release();
|
||||
}
|
||||
|
||||
RootAccessible::RootAccessible(nsIAccessible* aAcc, HWND aWnd):DocAccessible(aAcc,aWnd)
|
||||
RootAccessible::RootAccessible(nsIAccessible* aAcc, HWND aWnd):DocAccessible(aAcc,nsnull,aWnd)
|
||||
{
|
||||
|
||||
mListCount = 0;
|
||||
mNextId = -1;
|
||||
mNextPos = 0;
|
||||
|
||||
@@ -48,7 +48,7 @@ typedef LRESULT (STDAPICALLTYPE *LPFNNOTIFYWINEVENT)(DWORD event,HWND hwnd,LONG
|
||||
class Accessible : public SimpleDOMNode, public IAccessible
|
||||
{
|
||||
public: // construction, destruction
|
||||
Accessible(nsIAccessible*, HWND aWin = 0);
|
||||
Accessible(nsIAccessible*, nsIDOMNode*, HWND aWin = 0);
|
||||
virtual ~Accessible();
|
||||
|
||||
public: // IUnknown methods - see iunknown.h for documentation
|
||||
@@ -191,7 +191,7 @@ public:
|
||||
class DocAccessible: public Accessible, public ISimpleDOMDocument
|
||||
{
|
||||
public:
|
||||
DocAccessible(nsIAccessible*, HWND aWin = 0);
|
||||
DocAccessible(nsIAccessible*, nsIDOMNode *, HWND aWin = 0);
|
||||
virtual ~DocAccessible();
|
||||
|
||||
STDMETHODIMP_(ULONG) AddRef ();
|
||||
@@ -218,6 +218,7 @@ public:
|
||||
/* [out] */ BSTR __RPC_FAR *nameSpaceURI);
|
||||
};
|
||||
|
||||
|
||||
#define MAX_LIST_SIZE 100
|
||||
|
||||
class RootAccessible: public DocAccessible, public nsIAccessibleEventListener
|
||||
|
||||
@@ -70,18 +70,12 @@ static gSimpleDOMNodes = 0;
|
||||
// construction
|
||||
//-----------------------------------------------------
|
||||
|
||||
SimpleDOMNode::SimpleDOMNode(nsIAccessible* aNSAcc, HWND aWnd): mWnd(aWnd), m_cRef(0)
|
||||
{
|
||||
aNSAcc->AccGetDOMNode(getter_AddRefs(mDOMNode));
|
||||
nsCOMPtr<nsIDocument> doc(do_QueryInterface(mDOMNode));
|
||||
|
||||
#ifdef DEBUG_LEAKS
|
||||
printf("SimpleDOMNodes=%d\n", ++gSimpleDOMNodes);
|
||||
#endif
|
||||
}
|
||||
|
||||
SimpleDOMNode::SimpleDOMNode(nsIDOMNode *aNode, HWND aWnd): mDOMNode(aNode), mWnd(aWnd), m_cRef(0)
|
||||
SimpleDOMNode::SimpleDOMNode(nsIAccessible* aNSAcc, nsIDOMNode *aNode, HWND aWnd): mWnd(aWnd), m_cRef(0)
|
||||
{
|
||||
mDOMNode = aNode;
|
||||
if (!aNode && aNSAcc)
|
||||
aNSAcc->AccGetDOMNode(getter_AddRefs(mDOMNode));
|
||||
|
||||
#ifdef DEBUG_LEAKS
|
||||
printf("SimpleDOMNodes=%d\n", ++gSimpleDOMNodes);
|
||||
#endif
|
||||
@@ -337,11 +331,11 @@ ISimpleDOMNode* SimpleDOMNode::MakeSimpleDOMNode(nsIDOMNode *node)
|
||||
if (nsAcc) {
|
||||
nsCOMPtr<nsIAccessibleDocument> nsAccDoc(do_QueryInterface(nsAcc));
|
||||
if (nsAccDoc) {
|
||||
DocAccessible *accDoc = new DocAccessible(nsAcc, mWnd);
|
||||
DocAccessible *accDoc = new DocAccessible(nsAcc, node, mWnd);
|
||||
accDoc->QueryInterface(IID_ISimpleDOMNode, (void**)&newNode);
|
||||
}
|
||||
else {
|
||||
Accessible *acc = new Accessible(nsAcc, mWnd);
|
||||
Accessible *acc = new Accessible(nsAcc, node, mWnd);
|
||||
acc->QueryInterface(IID_ISimpleDOMNode, (void**)&newNode);
|
||||
}
|
||||
}
|
||||
@@ -357,7 +351,7 @@ ISimpleDOMNode* SimpleDOMNode::MakeSimpleDOMNode(nsIDOMNode *node)
|
||||
}
|
||||
}
|
||||
else
|
||||
newNode = new SimpleDOMNode(node, mWnd);
|
||||
newNode = new SimpleDOMNode(nsnull, node, mWnd);
|
||||
|
||||
if (newNode)
|
||||
newNode->AddRef();
|
||||
|
||||
@@ -44,7 +44,7 @@ class SimpleDOMNode : public ISimpleDOMNode
|
||||
{
|
||||
public: // construction, destruction
|
||||
SimpleDOMNode(nsIAccessible *, HWND);
|
||||
SimpleDOMNode(nsIDOMNode *, HWND);
|
||||
SimpleDOMNode(nsIAccessible *, nsIDOMNode *, HWND);
|
||||
virtual ~SimpleDOMNode();
|
||||
|
||||
public: // IUnknown methods - see iunknown.h for documentation
|
||||
|
||||
Reference in New Issue
Block a user