From 98b453703d9c54fdd1d1b21df5e4fa7f85add77b Mon Sep 17 00:00:00 2001 From: "akkana%netscape.com" Date: Tue, 28 Mar 2000 00:34:26 +0000 Subject: [PATCH] 28317: pasting beyond textarea's visible bounds should scroll. r=sfraser --- editor/base/nsHTMLEditor.cpp | 13 ++++++++++--- editor/libeditor/html/nsHTMLEditor.cpp | 13 ++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/editor/base/nsHTMLEditor.cpp b/editor/base/nsHTMLEditor.cpp index 0f1f82c4ec3..3479cd1e302 100644 --- a/editor/base/nsHTMLEditor.cpp +++ b/editor/base/nsHTMLEditor.cpp @@ -1251,7 +1251,7 @@ nsHTMLEditor::SetInlinePropertyOnNode( nsIDOMNode *aNode, // then loop through the list, set the property on each node PRUint32 listCount; arrayOfNodes->Count(&listCount); - for (j = 0; j < listCount; j++) + for (j = 0; j < (PRInt32)listCount; j++) { isupports = (dont_AddRef)(arrayOfNodes->ElementAt(0)); node = do_QueryInterface(isupports); @@ -1587,7 +1587,7 @@ PRBool nsHTMLEditor::IsAtEndOfNode(nsIDOMNode *aNode, PRInt32 aOffset) if (!aNode) return PR_FALSE; // oops PRUint32 len; GetLengthOfDOMNode(aNode, len); - if (aOffset == len) return PR_TRUE; + if (aOffset == (PRInt32)len) return PR_TRUE; if (IsTextNode(aNode)) { @@ -4348,6 +4348,14 @@ NS_IMETHODIMP nsHTMLEditor::Paste() } } + // Try to scroll the selection into view if the paste succeeded: + if (NS_SUCCEEDED(rv)) + { + nsCOMPtr presShell; + if (NS_SUCCEEDED(GetPresShell(getter_AddRefs(presShell))) && presShell) + presShell->ScrollSelectionIntoView(SELECTION_NORMAL, SELECTION_FOCUS_REGION); + } + return rv; } @@ -6772,7 +6780,6 @@ nsHTMLEditor::MoveContiguousContentIntoNewParent(nsIDOMNode *aStartNode, nsresult result = NS_OK; nsCOMPtrstartNode, endNode; PRInt32 startOffset = aStartOffset; // this will be the left edge of what we change - PRInt32 endOffset = aEndOffset; // this will be the right edge of what we change nsCOMPtrnewLeftNode; // this will be the middle text node if (IsTextNode(aStartNode)) { diff --git a/editor/libeditor/html/nsHTMLEditor.cpp b/editor/libeditor/html/nsHTMLEditor.cpp index 0f1f82c4ec3..3479cd1e302 100644 --- a/editor/libeditor/html/nsHTMLEditor.cpp +++ b/editor/libeditor/html/nsHTMLEditor.cpp @@ -1251,7 +1251,7 @@ nsHTMLEditor::SetInlinePropertyOnNode( nsIDOMNode *aNode, // then loop through the list, set the property on each node PRUint32 listCount; arrayOfNodes->Count(&listCount); - for (j = 0; j < listCount; j++) + for (j = 0; j < (PRInt32)listCount; j++) { isupports = (dont_AddRef)(arrayOfNodes->ElementAt(0)); node = do_QueryInterface(isupports); @@ -1587,7 +1587,7 @@ PRBool nsHTMLEditor::IsAtEndOfNode(nsIDOMNode *aNode, PRInt32 aOffset) if (!aNode) return PR_FALSE; // oops PRUint32 len; GetLengthOfDOMNode(aNode, len); - if (aOffset == len) return PR_TRUE; + if (aOffset == (PRInt32)len) return PR_TRUE; if (IsTextNode(aNode)) { @@ -4348,6 +4348,14 @@ NS_IMETHODIMP nsHTMLEditor::Paste() } } + // Try to scroll the selection into view if the paste succeeded: + if (NS_SUCCEEDED(rv)) + { + nsCOMPtr presShell; + if (NS_SUCCEEDED(GetPresShell(getter_AddRefs(presShell))) && presShell) + presShell->ScrollSelectionIntoView(SELECTION_NORMAL, SELECTION_FOCUS_REGION); + } + return rv; } @@ -6772,7 +6780,6 @@ nsHTMLEditor::MoveContiguousContentIntoNewParent(nsIDOMNode *aStartNode, nsresult result = NS_OK; nsCOMPtrstartNode, endNode; PRInt32 startOffset = aStartOffset; // this will be the left edge of what we change - PRInt32 endOffset = aEndOffset; // this will be the right edge of what we change nsCOMPtrnewLeftNode; // this will be the middle text node if (IsTextNode(aStartNode)) {