Bug 353539 - textarea.focus() puts caret at end without scrolling it into view; r=roc

--HG--
extra : rebase_source : 775c2c16cfbb0ef9a9024dd53c42c803ee08e8ae
This commit is contained in:
Ehsan Akhgari 2010-03-18 12:14:40 -04:00
parent 52ec0ae2b2
commit be4b7eb8dc
3 changed files with 59 additions and 0 deletions

View File

@ -1865,6 +1865,11 @@ void nsTextControlFrame::SetFocus(PRBool aOn, PRBool aRepaint)
if (NS_SUCCEEDED(InitFocusedValue()))
MaybeBeginSecureKeyboardInput();
// Scroll the current selection into view
mSelCon->ScrollSelectionIntoView(nsISelectionController::SELECTION_NORMAL,
nsISelectionController::SELECTION_FOCUS_REGION,
PR_FALSE);
// tell the caret to use our selection
nsCOMPtr<nsISelection> ourSel;

View File

@ -49,6 +49,7 @@ _TEST_FILES = test_bug231389.html \
bug287446_subframe.html \
test_bug345267.html \
test_bug348236.html \
test_bug353539.html \
test_bug378670.html \
test_bug402198.html \
test_bug411236.html \

View File

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=353539
-->
<head>
<title>Test for Bug 353539</title>
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=353539">Mozilla Bug 353539</a>
<p id="display">
<textarea id="area" rows="5">
Here
is
some
very
long
text
that
we're
using
for
testing
purposes
</textarea>
</p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 353539 **/
SimpleTest.waitForExplicitFinish();
addLoadEvent(function() {
var area = document.getElementById("area");
is(area.scrollTop, 0, "The textarea should not be scrolled initially");
area.focus();
setTimeout(function() {
isnot(area.scrollTop, 0, "The textarea's insertion point should be scrolled into view");
SimpleTest.finish();
}, 0);
});
</script>
</pre>
</body>
</html>