Title: [143475] trunk
- Revision
- 143475
- Author
- rob...@webkit.org
- Date
- 2013-02-20 10:27:03 -0800 (Wed, 20 Feb 2013)
Log Message
input element with placeholder text and width set to 100% on focus causes overflow even after losing focus
https://bugs.webkit.org/show_bug.cgi?id=109020
Reviewed by David Hyatt.
Source/WebCore:
Tests: fast/forms/input-placeholder-layout-view.html
fast/forms/textarea-placeholder-layout-view.html
Placeholder elements don't affect layout so shouldn't contribute overflow either.
* rendering/RenderTextControlSingleLine.cpp:
(WebCore::RenderTextControlSingleLine::layout):
LayoutTests:
* fast/forms/input-placeholder-layout-view-expected.html: Added.
* fast/forms/input-placeholder-layout-view.html: Added.
* fast/forms/textarea-placeholder-layout-view-expected.html: Added.
* fast/forms/textarea-placeholder-layout-view.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (143474 => 143475)
--- trunk/LayoutTests/ChangeLog 2013-02-20 18:23:42 UTC (rev 143474)
+++ trunk/LayoutTests/ChangeLog 2013-02-20 18:27:03 UTC (rev 143475)
@@ -1,3 +1,15 @@
+2013-02-20 Robert Hogan <rob...@webkit.org>
+
+ input element with placeholder text and width set to 100% on focus causes overflow even after losing focus
+ https://bugs.webkit.org/show_bug.cgi?id=109020
+
+ Reviewed by David Hyatt.
+
+ * fast/forms/input-placeholder-layout-view-expected.html: Added.
+ * fast/forms/input-placeholder-layout-view.html: Added.
+ * fast/forms/textarea-placeholder-layout-view-expected.html: Added.
+ * fast/forms/textarea-placeholder-layout-view.html: Added.
+
2013-02-20 Rouslan Solomakhin <rous...@chromium.org>
Spellchecker should not crash after text has changed and spellcheck results are served from cache
Added: trunk/LayoutTests/fast/forms/input-placeholder-layout-view-expected.html (0 => 143475)
--- trunk/LayoutTests/fast/forms/input-placeholder-layout-view-expected.html (rev 0)
+++ trunk/LayoutTests/fast/forms/input-placeholder-layout-view-expected.html 2013-02-20 18:27:03 UTC (rev 143475)
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<style>
+body {
+ margin: 0;
+ padding: 0;
+}
+</style>
+<p> https://bugs.webkit.org/show_bug.cgi?id=109020: An input element that grows to 100% width will create scrollbars, and these should go away when it loses focus. </p>
+<input id="input" placeholder="placeholder">
+<input id="input2">
+<script>
+ document.getElementById('input2').focus();
+</script>
Added: trunk/LayoutTests/fast/forms/input-placeholder-layout-view.html (0 => 143475)
--- trunk/LayoutTests/fast/forms/input-placeholder-layout-view.html (rev 0)
+++ trunk/LayoutTests/fast/forms/input-placeholder-layout-view.html 2013-02-20 18:27:03 UTC (rev 143475)
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<head>
+<style>
+body {
+ margin: 0;
+ padding: 0;
+}
+#input:focus {
+ width: 100%;
+}
+</style>
+</head>
+<body id="body">
+<p> https://bugs.webkit.org/show_bug.cgi?id=109020: An input element that grows to 100% width will create scrollbars, and these should go away when it loses focus. </p>
+<input id="input" placeholder="placeholder">
+<input id="input2">
+<script>
+ document.getElementById('input').focus();
+ document.getElementById('input2').focus();
+</script>
+</body>
Added: trunk/LayoutTests/fast/forms/textarea-placeholder-layout-view-expected.html (0 => 143475)
--- trunk/LayoutTests/fast/forms/textarea-placeholder-layout-view-expected.html (rev 0)
+++ trunk/LayoutTests/fast/forms/textarea-placeholder-layout-view-expected.html 2013-02-20 18:27:03 UTC (rev 143475)
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<style>
+body {
+ margin: 0;
+ padding: 0;
+}
+</style>
+<p> https://bugs.webkit.org/show_bug.cgi?id=109020: An input element that grows to 100% width will create scrollbars, and these should go away when it loses focus. </p>
+<textarea id="input" placeholder="placeholder"></textarea>
+<textarea id="input2"></textarea>
+<script>
+ document.getElementById('input2').focus();
+</script>
Added: trunk/LayoutTests/fast/forms/textarea-placeholder-layout-view.html (0 => 143475)
--- trunk/LayoutTests/fast/forms/textarea-placeholder-layout-view.html (rev 0)
+++ trunk/LayoutTests/fast/forms/textarea-placeholder-layout-view.html 2013-02-20 18:27:03 UTC (rev 143475)
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<head>
+<style>
+body {
+ margin: 0;
+ padding: 0;
+}
+#input:focus {
+ width: 100%;
+}
+</style>
+</head>
+<body id="body">
+<p> https://bugs.webkit.org/show_bug.cgi?id=109020: An input element that grows to 100% width will create scrollbars, and these should go away when it loses focus. </p>
+<textarea id="input" placeholder="placeholder"></textarea>
+<textarea id="input2"></textarea>
+<script>
+ document.getElementById('input').focus();
+ document.getElementById('input2').focus();
+</script>
+</body>
Modified: trunk/Source/WebCore/ChangeLog (143474 => 143475)
--- trunk/Source/WebCore/ChangeLog 2013-02-20 18:23:42 UTC (rev 143474)
+++ trunk/Source/WebCore/ChangeLog 2013-02-20 18:27:03 UTC (rev 143475)
@@ -1,3 +1,18 @@
+2013-02-20 Robert Hogan <rob...@webkit.org>
+
+ input element with placeholder text and width set to 100% on focus causes overflow even after losing focus
+ https://bugs.webkit.org/show_bug.cgi?id=109020
+
+ Reviewed by David Hyatt.
+
+ Tests: fast/forms/input-placeholder-layout-view.html
+ fast/forms/textarea-placeholder-layout-view.html
+
+ Placeholder elements don't affect layout so shouldn't contribute overflow either.
+
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::layout):
+
2013-02-20 Mark Lam <mark....@apple.com>
Rename DatabaseBackend to DatabaseBackendBase.
Modified: trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp (143474 => 143475)
--- trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp 2013-02-20 18:23:42 UTC (rev 143474)
+++ trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp 2013-02-20 18:27:03 UTC (rev 143475)
@@ -177,6 +177,7 @@
if (RenderBox* placeholderBox = placeholderElement ? placeholderElement->renderBox() : 0) {
placeholderBox->style()->setWidth(Length(innerTextRenderer->width() - placeholderBox->borderAndPaddingWidth(), Fixed));
placeholderBox->style()->setHeight(Length(innerTextRenderer->height() - placeholderBox->borderAndPaddingHeight(), Fixed));
+ bool neededLayout = placeholderBox->needsLayout();
bool placeholderBoxHadLayout = placeholderBox->everHadLayout();
placeholderBox->layoutIfNeeded();
LayoutPoint textOffset = innerTextRenderer->location();
@@ -191,6 +192,12 @@
// logic should be shared with RenderBlock::layoutBlockChild.
placeholderBox->repaint();
}
+ // The placeholder gets layout last, after the parent text control and its other children,
+ // so in order to get the correct overflow from the placeholder we need to recompute it now.
+ if (neededLayout) {
+ m_overflow.clear();
+ computeOverflow(clientLogicalBottom());
+ }
}
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes