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:
aaronl%netscape.com
2001-06-12 08:50:07 +00:00
parent b1f0e5ff5f
commit 17a0cdd28c
4 changed files with 22 additions and 25 deletions

View File

@@ -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;

View File

@@ -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

View File

@@ -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();

View File

@@ -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