зеркало из https://github.com/mozilla/pjs.git
Implementation of the easy parts
This commit is contained in:
Родитель
a3c04dda1e
Коммит
436f0d2ec6
|
@ -78,6 +78,16 @@ public:
|
||||||
NS_IMETHOD Clone(nsIDOMRange** aReturn);
|
NS_IMETHOD Clone(nsIDOMRange** aReturn);
|
||||||
|
|
||||||
NS_IMETHOD ToString(nsString& aReturn);
|
NS_IMETHOD ToString(nsString& aReturn);
|
||||||
|
|
||||||
|
private:
|
||||||
|
PR_Bool mIsPositioned;
|
||||||
|
nsIDOMElement* mStartParent;
|
||||||
|
PRInt32 mStartOffset;
|
||||||
|
nsIDOMElement* mEndParent;
|
||||||
|
PRInt32 mEndOffset;
|
||||||
|
|
||||||
|
PR_Bool IsIncreasing(nsIDOMElement* sParent, PRInt32 sOffset,
|
||||||
|
nsIDOMElement* eParent, PRInt32 eOffset);
|
||||||
};
|
};
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
|
@ -105,6 +115,12 @@ nsresult nsRange::QueryInterface(const nsIID& aIID,
|
||||||
|
|
||||||
nsRange::nsRange() {
|
nsRange::nsRange() {
|
||||||
NS_INIT_REFCNT();
|
NS_INIT_REFCNT();
|
||||||
|
|
||||||
|
mIsPositioned = PR_FALSE;
|
||||||
|
nsIDOMElement* mStartParent = NULL;
|
||||||
|
PRInt32 mStartOffset = 0;
|
||||||
|
nsIDOMElement* mEndParent = NULL;
|
||||||
|
PRInt32 mEndOffset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsRange::~nsRange() {
|
nsRange::~nsRange() {
|
||||||
|
@ -113,65 +129,220 @@ nsRange::~nsRange() {
|
||||||
NS_IMPL_ADDREF(nsRange)
|
NS_IMPL_ADDREF(nsRange)
|
||||||
NS_IMPL_RELEASE(nsRange)
|
NS_IMPL_RELEASE(nsRange)
|
||||||
|
|
||||||
nsresult nsRange::GetIsPositioned(PRBool* aIsPositioned)
|
PR_Bool nsRange::IsIncreasing(nsIDOMElement* sParent, PRInt32 sOffset,
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
nsIDOMElement* eParent, PRInt32 eOffset)
|
||||||
|
{
|
||||||
|
// XXX NEED IMPLEMENTATION!
|
||||||
|
return PR_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetIsPositioned(PRBool aIsPositioned)
|
nsresult nsRange::GetIsPositioned(PRBool* aIsPositioned)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
*aIsPositioned = mIsPositioned;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetStartParent(nsIDOMElement** aStartParent)
|
nsresult nsRange::GetStartParent(nsIDOMElement** aStartParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!aStartParent)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
NS_IF_RELEASE(*aStartParent);
|
||||||
|
NS_IF_ADDREF(mStartParent);
|
||||||
|
*aStartParent = mStartParent;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetStartParent(nsIDOMElement* aStartParent)
|
nsresult nsRange::SetStartParent(nsIDOMElement* aStartParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!IsIncreasing(aStartParent, mStartOffset,
|
||||||
|
mEndParent, mEndOffset))
|
||||||
|
return NS_ERROR_ILLEGAL_VALUE;
|
||||||
|
|
||||||
|
NS_IF_RELEASE(mStartParent);
|
||||||
|
NS_IF_ADDREF(aStartParent);
|
||||||
|
mStartParent = aStartParent;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetStartOffset(PRInt32* aStartOffset)
|
nsresult nsRange::GetStartOffset(PRInt32* aStartOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!aStartParent)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
*aStartOffset = mStartOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetStartOffset(PRInt32 aStartOffset)
|
nsresult nsRange::SetStartOffset(PRInt32 aStartOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!IsIncreasing(mStartParent, aStartOffset,
|
||||||
|
mEndParent, mEndOffset))
|
||||||
|
return NS_ERROR_ILLEGAL_VALUE;
|
||||||
|
|
||||||
|
mStartOffset = aStartOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetEndParent(nsIDOMElement** aEndParent)
|
nsresult nsRange::GetEndParent(nsIDOMElement** aEndParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!aStartParent)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
NS_IF_RELEASE(*aEndParent);
|
||||||
|
NS_IF_ADDREF(mEndParent);
|
||||||
|
*aEndParent = mEndParent;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetEndParent(nsIDOMElement* aEndParent)
|
nsresult nsRange::SetEndParent(nsIDOMElement* aEndParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!IsIncreasing(mStartParent, mStartOffset,
|
||||||
|
aEndParent, mEndOffset))
|
||||||
|
return NS_ERROR_ILLEGAL_VALUE;
|
||||||
|
|
||||||
|
NS_IF_RELEASE(mEndParent);
|
||||||
|
NS_IF_ADDREF(aEndParent);
|
||||||
|
mEndParent = aEndParent;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetEndOffset(PRInt32* aEndOffset)
|
nsresult nsRange::GetEndOffset(PRInt32* aEndOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!aStartParent)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
*aEndOffset = mEndOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetEndOffset(PRInt32 aEndOffset)
|
nsresult nsRange::SetEndOffset(PRInt32 aEndOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!IsIncreasing(mStartParent, mStartOffset,
|
||||||
|
mEndParent, aEndOffset))
|
||||||
|
return NS_ERROR_ILLEGAL_VALUE;
|
||||||
|
|
||||||
|
mEndOffset = aEndOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetIsCollapsed(PRBool* aIsCollapsed)
|
nsresult nsRange::GetIsCollapsed(PRBool* aIsCollapsed)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
nsresult nsRange::SetIsCollapsed(PRBool aIsCollapsed)
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
if (mEndParent == 0 ||
|
||||||
|
(mStartParent == mEndParent && mStartOffset == mEndOffset))
|
||||||
|
*aIsCollapsed = PR_TRUE;
|
||||||
|
else
|
||||||
|
*aIsCollapsed = PR_FALSE;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetCommonParent(nsIDOMNode** aCommonParent)
|
nsresult nsRange::GetCommonParent(nsIDOMNode** aCommonParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
nsresult nsRange::SetCommonParent(nsIDOMNode* aCommonParent)
|
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
|
||||||
|
|
||||||
nsresult nsRange::SetStart(nsIDOMNode* aParent, PRInt32 aOffset)
|
nsresult nsRange::SetStart(nsIDOMNode* aParent, PRInt32 aOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
{
|
||||||
|
NS_IF_RELEASE(mEndParent);
|
||||||
|
mEndParent = NULL;
|
||||||
|
mEndOffset = NULL;
|
||||||
|
mIsPositioned = PR_TRUE;
|
||||||
|
}
|
||||||
|
NS_IF_ADDREF(aParent);
|
||||||
|
mStartParent = aParent;
|
||||||
|
mStartOffset = aOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetEnd(nsIDOMNode* aParent, PRInt32 aOffset)
|
nsresult nsRange::SetEnd(nsIDOMNode* aParent, PRInt32 aOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED; // can't set end before start
|
||||||
|
|
||||||
|
NS_IF_ADDREF(aParent);
|
||||||
|
mEndParent = aParent;
|
||||||
|
mEndOffset = aOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::Collapse(PRBool aToStart)
|
nsresult nsRange::Collapse(PRBool aToStart)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
|
||||||
|
if (aToStart)
|
||||||
|
{
|
||||||
|
NS_IF_RELEASE(mEndParent);
|
||||||
|
NS_IF_ADDREF(mStartParent);
|
||||||
|
mEndParent = mStartParent;
|
||||||
|
mEndOffset = mStartOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NS_IF_RELEASE(mStartParent);
|
||||||
|
NS_IF_ADDREF(mEndParent);
|
||||||
|
mStartParent = mEndParent;
|
||||||
|
mStartOffset = mEndOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::Unposition()
|
nsresult nsRange::Unposition()
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
NS_IF_RELEASE(mStartParent);
|
||||||
|
mStartParent = NULL;
|
||||||
|
mStartOffset = 0;
|
||||||
|
NS_IF_RELEASE(mEndParent);
|
||||||
|
mEndParent = NULL;
|
||||||
|
mEndOffset = 0;
|
||||||
|
mIsPositioned = PR_FALSE;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SelectNode(nsIDOMNode* aN)
|
nsresult nsRange::SelectNode(nsIDOMNode* aN)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
nsIDOMNode* node;
|
||||||
|
nsresult res = aN->GetParentNode(aN, &node);
|
||||||
|
if (!NS_SUCCEEDED(res))
|
||||||
|
return res;
|
||||||
|
|
||||||
|
if (mIsPositioned)
|
||||||
|
Unposition();
|
||||||
|
NS_IF_ADDREF(node);
|
||||||
|
mStartParent = node;
|
||||||
|
mStartOffset = 0; // XXX NO DIRECT WAY TO GET CHILD # OF THIS NODE!
|
||||||
|
NS_IF_ADDREF(node);
|
||||||
|
mEndParent = node;
|
||||||
|
mEndOffset = mStartOffset;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SelectNodeContents(nsIDOMNode* aN)
|
nsresult nsRange::SelectNodeContents(nsIDOMNode* aN)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (mIsPositioned)
|
||||||
|
Unposition();
|
||||||
|
|
||||||
|
NS_IF_ADDREF(aN);
|
||||||
|
mStartParent = aN;
|
||||||
|
mStartOffset = 0;
|
||||||
|
NS_IF_ADDREF(aN);
|
||||||
|
mEndParent = aN;
|
||||||
|
mEndOffset = 0; // WRONG! SHOULD BE # OF LAST CHILD!
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::DeleteContents()
|
nsresult nsRange::DeleteContents()
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
@ -194,3 +365,19 @@ nsresult nsRange::Clone(nsIDOMRange** aReturn)
|
||||||
nsresult nsRange::ToString(nsString& aReturn)
|
nsresult nsRange::ToString(nsString& aReturn)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
//
|
||||||
|
// We don't actually want to allow setting this ...
|
||||||
|
// it should be set only by actually positioning the range.
|
||||||
|
//
|
||||||
|
nsresult nsRange::SetIsPositioned(PRBool aIsPositioned)
|
||||||
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
//
|
||||||
|
// Various other things which we don't want to implement yet:
|
||||||
|
//
|
||||||
|
nsresult nsRange::SetIsCollapsed(PRBool aIsCollapsed)
|
||||||
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
nsresult nsRange::SetCommonParent(nsIDOMNode* aCommonParent)
|
||||||
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,16 @@ public:
|
||||||
NS_IMETHOD Clone(nsIDOMRange** aReturn);
|
NS_IMETHOD Clone(nsIDOMRange** aReturn);
|
||||||
|
|
||||||
NS_IMETHOD ToString(nsString& aReturn);
|
NS_IMETHOD ToString(nsString& aReturn);
|
||||||
|
|
||||||
|
private:
|
||||||
|
PR_Bool mIsPositioned;
|
||||||
|
nsIDOMElement* mStartParent;
|
||||||
|
PRInt32 mStartOffset;
|
||||||
|
nsIDOMElement* mEndParent;
|
||||||
|
PRInt32 mEndOffset;
|
||||||
|
|
||||||
|
PR_Bool IsIncreasing(nsIDOMElement* sParent, PRInt32 sOffset,
|
||||||
|
nsIDOMElement* eParent, PRInt32 eOffset);
|
||||||
};
|
};
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
|
@ -105,6 +115,12 @@ nsresult nsRange::QueryInterface(const nsIID& aIID,
|
||||||
|
|
||||||
nsRange::nsRange() {
|
nsRange::nsRange() {
|
||||||
NS_INIT_REFCNT();
|
NS_INIT_REFCNT();
|
||||||
|
|
||||||
|
mIsPositioned = PR_FALSE;
|
||||||
|
nsIDOMElement* mStartParent = NULL;
|
||||||
|
PRInt32 mStartOffset = 0;
|
||||||
|
nsIDOMElement* mEndParent = NULL;
|
||||||
|
PRInt32 mEndOffset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsRange::~nsRange() {
|
nsRange::~nsRange() {
|
||||||
|
@ -113,65 +129,220 @@ nsRange::~nsRange() {
|
||||||
NS_IMPL_ADDREF(nsRange)
|
NS_IMPL_ADDREF(nsRange)
|
||||||
NS_IMPL_RELEASE(nsRange)
|
NS_IMPL_RELEASE(nsRange)
|
||||||
|
|
||||||
nsresult nsRange::GetIsPositioned(PRBool* aIsPositioned)
|
PR_Bool nsRange::IsIncreasing(nsIDOMElement* sParent, PRInt32 sOffset,
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
nsIDOMElement* eParent, PRInt32 eOffset)
|
||||||
|
{
|
||||||
|
// XXX NEED IMPLEMENTATION!
|
||||||
|
return PR_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetIsPositioned(PRBool aIsPositioned)
|
nsresult nsRange::GetIsPositioned(PRBool* aIsPositioned)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
*aIsPositioned = mIsPositioned;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetStartParent(nsIDOMElement** aStartParent)
|
nsresult nsRange::GetStartParent(nsIDOMElement** aStartParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!aStartParent)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
NS_IF_RELEASE(*aStartParent);
|
||||||
|
NS_IF_ADDREF(mStartParent);
|
||||||
|
*aStartParent = mStartParent;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetStartParent(nsIDOMElement* aStartParent)
|
nsresult nsRange::SetStartParent(nsIDOMElement* aStartParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!IsIncreasing(aStartParent, mStartOffset,
|
||||||
|
mEndParent, mEndOffset))
|
||||||
|
return NS_ERROR_ILLEGAL_VALUE;
|
||||||
|
|
||||||
|
NS_IF_RELEASE(mStartParent);
|
||||||
|
NS_IF_ADDREF(aStartParent);
|
||||||
|
mStartParent = aStartParent;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetStartOffset(PRInt32* aStartOffset)
|
nsresult nsRange::GetStartOffset(PRInt32* aStartOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!aStartParent)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
*aStartOffset = mStartOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetStartOffset(PRInt32 aStartOffset)
|
nsresult nsRange::SetStartOffset(PRInt32 aStartOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!IsIncreasing(mStartParent, aStartOffset,
|
||||||
|
mEndParent, mEndOffset))
|
||||||
|
return NS_ERROR_ILLEGAL_VALUE;
|
||||||
|
|
||||||
|
mStartOffset = aStartOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetEndParent(nsIDOMElement** aEndParent)
|
nsresult nsRange::GetEndParent(nsIDOMElement** aEndParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!aStartParent)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
NS_IF_RELEASE(*aEndParent);
|
||||||
|
NS_IF_ADDREF(mEndParent);
|
||||||
|
*aEndParent = mEndParent;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetEndParent(nsIDOMElement* aEndParent)
|
nsresult nsRange::SetEndParent(nsIDOMElement* aEndParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!IsIncreasing(mStartParent, mStartOffset,
|
||||||
|
aEndParent, mEndOffset))
|
||||||
|
return NS_ERROR_ILLEGAL_VALUE;
|
||||||
|
|
||||||
|
NS_IF_RELEASE(mEndParent);
|
||||||
|
NS_IF_ADDREF(aEndParent);
|
||||||
|
mEndParent = aEndParent;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetEndOffset(PRInt32* aEndOffset)
|
nsresult nsRange::GetEndOffset(PRInt32* aEndOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!aStartParent)
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
*aEndOffset = mEndOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetEndOffset(PRInt32 aEndOffset)
|
nsresult nsRange::SetEndOffset(PRInt32 aEndOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
if (!IsIncreasing(mStartParent, mStartOffset,
|
||||||
|
mEndParent, aEndOffset))
|
||||||
|
return NS_ERROR_ILLEGAL_VALUE;
|
||||||
|
|
||||||
|
mEndOffset = aEndOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetIsCollapsed(PRBool* aIsCollapsed)
|
nsresult nsRange::GetIsCollapsed(PRBool* aIsCollapsed)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
nsresult nsRange::SetIsCollapsed(PRBool aIsCollapsed)
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
if (mEndParent == 0 ||
|
||||||
|
(mStartParent == mEndParent && mStartOffset == mEndOffset))
|
||||||
|
*aIsCollapsed = PR_TRUE;
|
||||||
|
else
|
||||||
|
*aIsCollapsed = PR_FALSE;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::GetCommonParent(nsIDOMNode** aCommonParent)
|
nsresult nsRange::GetCommonParent(nsIDOMNode** aCommonParent)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
nsresult nsRange::SetCommonParent(nsIDOMNode* aCommonParent)
|
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
|
||||||
|
|
||||||
nsresult nsRange::SetStart(nsIDOMNode* aParent, PRInt32 aOffset)
|
nsresult nsRange::SetStart(nsIDOMNode* aParent, PRInt32 aOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
{
|
||||||
|
NS_IF_RELEASE(mEndParent);
|
||||||
|
mEndParent = NULL;
|
||||||
|
mEndOffset = NULL;
|
||||||
|
mIsPositioned = PR_TRUE;
|
||||||
|
}
|
||||||
|
NS_IF_ADDREF(aParent);
|
||||||
|
mStartParent = aParent;
|
||||||
|
mStartOffset = aOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SetEnd(nsIDOMNode* aParent, PRInt32 aOffset)
|
nsresult nsRange::SetEnd(nsIDOMNode* aParent, PRInt32 aOffset)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED; // can't set end before start
|
||||||
|
|
||||||
|
NS_IF_ADDREF(aParent);
|
||||||
|
mEndParent = aParent;
|
||||||
|
mEndOffset = aOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::Collapse(PRBool aToStart)
|
nsresult nsRange::Collapse(PRBool aToStart)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (!mIsPositioned)
|
||||||
|
return NS_ERROR_NOT_INITIALIZED;
|
||||||
|
|
||||||
|
if (aToStart)
|
||||||
|
{
|
||||||
|
NS_IF_RELEASE(mEndParent);
|
||||||
|
NS_IF_ADDREF(mStartParent);
|
||||||
|
mEndParent = mStartParent;
|
||||||
|
mEndOffset = mStartOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NS_IF_RELEASE(mStartParent);
|
||||||
|
NS_IF_ADDREF(mEndParent);
|
||||||
|
mStartParent = mEndParent;
|
||||||
|
mStartOffset = mEndOffset;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::Unposition()
|
nsresult nsRange::Unposition()
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
NS_IF_RELEASE(mStartParent);
|
||||||
|
mStartParent = NULL;
|
||||||
|
mStartOffset = 0;
|
||||||
|
NS_IF_RELEASE(mEndParent);
|
||||||
|
mEndParent = NULL;
|
||||||
|
mEndOffset = 0;
|
||||||
|
mIsPositioned = PR_FALSE;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SelectNode(nsIDOMNode* aN)
|
nsresult nsRange::SelectNode(nsIDOMNode* aN)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
nsIDOMNode* node;
|
||||||
|
nsresult res = aN->GetParentNode(aN, &node);
|
||||||
|
if (!NS_SUCCEEDED(res))
|
||||||
|
return res;
|
||||||
|
|
||||||
|
if (mIsPositioned)
|
||||||
|
Unposition();
|
||||||
|
NS_IF_ADDREF(node);
|
||||||
|
mStartParent = node;
|
||||||
|
mStartOffset = 0; // XXX NO DIRECT WAY TO GET CHILD # OF THIS NODE!
|
||||||
|
NS_IF_ADDREF(node);
|
||||||
|
mEndParent = node;
|
||||||
|
mEndOffset = mStartOffset;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::SelectNodeContents(nsIDOMNode* aN)
|
nsresult nsRange::SelectNodeContents(nsIDOMNode* aN)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{
|
||||||
|
if (mIsPositioned)
|
||||||
|
Unposition();
|
||||||
|
|
||||||
|
NS_IF_ADDREF(aN);
|
||||||
|
mStartParent = aN;
|
||||||
|
mStartOffset = 0;
|
||||||
|
NS_IF_ADDREF(aN);
|
||||||
|
mEndParent = aN;
|
||||||
|
mEndOffset = 0; // WRONG! SHOULD BE # OF LAST CHILD!
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsRange::DeleteContents()
|
nsresult nsRange::DeleteContents()
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
@ -194,3 +365,19 @@ nsresult nsRange::Clone(nsIDOMRange** aReturn)
|
||||||
nsresult nsRange::ToString(nsString& aReturn)
|
nsresult nsRange::ToString(nsString& aReturn)
|
||||||
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
//
|
||||||
|
// We don't actually want to allow setting this ...
|
||||||
|
// it should be set only by actually positioning the range.
|
||||||
|
//
|
||||||
|
nsresult nsRange::SetIsPositioned(PRBool aIsPositioned)
|
||||||
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
//
|
||||||
|
// Various other things which we don't want to implement yet:
|
||||||
|
//
|
||||||
|
nsresult nsRange::SetIsCollapsed(PRBool aIsCollapsed)
|
||||||
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
nsresult nsRange::SetCommonParent(nsIDOMNode* aCommonParent)
|
||||||
|
{ return NS_ERROR_NOT_IMPLEMENTED; }
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче