Summary: | REGRESSION: Editing text on line numbers greater than 'rows' attribute makes native text area scroll up | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | David Kilzer (:ddkilzer) <ddkilzer> | ||||||||
Component: | Forms | Assignee: | Adele Peterson <adele> | ||||||||
Status: | RESOLVED FIXED | ||||||||||
Severity: | Normal | CC: | adele, darin, hyatt, mjs | ||||||||
Priority: | P1 | Keywords: | InRadar, Regression | ||||||||
Version: | 420+ | ||||||||||
Hardware: | Mac | ||||||||||
OS: | OS X 10.4 | ||||||||||
Attachments: |
|
Description
David Kilzer (:ddkilzer)
2006-07-15 14:49:51 PDT
This sounds like a bug Adele is already working on. <rdar://problem/4644614> Created attachment 9617 [details]
potential fix
I don't think this is the right fix for the long term, but in the short term, this fixes the textarea case. For example, if a div w/ overflow were nested in multiple RenderBlocks/RenderFlexibleBoxes, then this fix wouldn't apply since it only checks the direct parent. It also wouldn't work for children that were RenderFlexibleBoxes. It is a lower risk fix than some of the other ideas that hyatt, darin, and i discussed.
Comment on attachment 9617 [details]
potential fix
Even if we're doing this hack, I don't think that a two-pass layout system justifies having a counter for number of layouts. How about just a boolean that's true when you're in the first pass?
I tried generalizing this fix a little more, and it seems that horizontal flex boxes (like in a text field) don't always cause the child to layout twice. So the more general version fails. Created attachment 9618 [details]
another patch
this doesn't change anything for horizontal boxes.
Created attachment 9620 [details]
patch w/ changelog & test
Comment on attachment 9620 [details]
patch w/ changelog & test
I think this is good enough for right now.
15581 > if (view()->flexBoxInFirstLayout() == this) > view()->setFlexBoxInFirstLayout(0); > else > view()->setFlexBoxInFirstLayout(this); Adele, the code above won't work right for nested flex boxes. You should do this instead: > if (view()->flexBoxInFirstLayout() == this) > view()->setFlexBoxInFirstLayout(0); > else if (!view()->flexBoxInFirstLayout()) > view()->setFlexBoxInFirstLayout(this); which will work for the nested case too. updated w/ darin's suggested change => r15582. |