Closed
Bug 20367
Opened 25 years ago
Closed 25 years ago
[dogfood] text and password fields in nested table display in wrong location
Categories
(Core :: Layout: Form Controls, defect, P3)
Tracking
()
VERIFIED
FIXED
People
(Reporter: rods, Assigned: troy)
References
()
Details
To make sure you have GFX scrollbars turned off, do this: PRBool nsCSSFrameConstructor::HasGfxScrollbars(nsIPresContext* aPresContext) { nsCOMPtr<nsIPref> pref; aPresContext->GetPrefs(getter_AddRefs(pref)); PRBool gfx = PR_FALSE; if (pref) { pref->GetBoolPref("nglayout.widget.gfxscrollbars", &gfx); } #if 1 return PR_FALSE; #else return gfx; #endif /* nsWidgetRendering mode; aPresContext->GetWidgetRenderingMode(&mode); return (eWidgetRendering_Native != mode); */ }
Reporter | ||
Comment 1•25 years ago
|
||
Here is another URL that is even more dramatic: http://www.mirc.com/mailing.html
Assignee: buster → troy
Summary: Click in text field causes reflow and a different layout → [dogfood] text and password fields in nested table display in wrong location
reassigning to troy. chris k. and I discussed this, and he suspects the changes you made recently having to do with how views are positioned. I'm still catching up on my mail from vacation, so I don't know all the details about those changes. anyway, let me know if I can help track this down any further. details of my investigation below: -------------------------------------------------------------------------------- basically, the problem seems to be that the text control view is getting positioned incorrectly by the table reflow code. the frame output looks reasonable: the text control frame seems to be inside the inner table's cell at offset 0,0. But the text control displays above the inner table, as if the view nested inside it is at the wrong offset. I don't know how to interpret the data given by dump views, but I don't see any negative offsets. To reproduce the problem, it seems that all these things matter: 1) the text control is in a nested table 2) the text control has a webshell (hence the use of a password, takes some complexity out of the problem) 3) the outer table must not have a border ???? 4) the text in the first cell in the outer table must wrap: you must shrink your window so the text takes up at least 2 lines. the more lines the text takes up, the more the text control will be displaced. that should be some sort of clue.... here's a tiny test case that shows the problem: <HTML><BODY> <TABLE BORDER="0" BGCOLOR="#FFFFEF" > <TR> <TD> It is now possible to get a notification by E-mail blah blah blah blah <FORM> <TABLE BORDER=0 > <TR> <TD BGCOLOR="#FFFFCC"> <input type="text" name="address" size="20" value=""> </TD> </TR> </TABLE> </TD> </TR> </TABLE> </FORM> </BODY></HTML> for the PDT team: this same problem happens when you click on a text control in any of the 2 urls given above. I've changed the subject so we can deal with the problem with fewer steps to reproduce, but when considering whether this should be dogfood or not, keep in mind this happens on normal text fields, not just password fields. so users see password fields in the wrong place, and they see text fields jump on initial focus.
When I look at the page, http://www.mirc.com/mailing.html, what I see is the edit field looks to be in the correct place. Then when it is clicked in it displays itself in some wacky place Dumping the view hierarchy before and after clicking in the edit field I see what looks like a new view (with a widget) that exists after that didn't exist before clikcing in the edit field Yes the rules for how DidReflow() notifications and view positioning/sizing work have changed, and yes that may be related to the problem, but I have no idea how the edit field code works and so there's not much I can do about this You're going to have to take a look at it. Maybe if you describe how it works I'll be able to comment on what's wrong
I was able to verify the problem using a SELECT instead of an edit field
troy: did you try the test minimized test case that used a password field instead of a normal text control? in that case, the view is created imediately rather than being deferred. does that help? basically, the password control creates a webshell to hold a subdocument. the embedded webshell creates its own view. the text control frame does not have a view of it's own, and does not have any code that I know of to do anything special with views, just the webshell.
I found the problem and will be checking in a fix. It was in the row frame code when we optimize the case where the cell frame doesn't need to be reflowed because the new available width is the same as the last time we reflowed the cell. Even though we don't reflow the cell frame we need to make sure that any views are properly positioned There are probably still a couple of more places in the table code where this could be an issue. If I can make a test case that verifies my suspicions I will fix them as well
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Comment 8•25 years ago
|
||
Marking VERIFIED FIXED on: - Linux6 2000-03-07-09 Commercial build - MacOS9 2000-03-07-08 Commercial build - Win98 2000-03-07-09 Commercial build
Status: RESOLVED → VERIFIED
Comment hidden (collapsed) |
You need to log in
before you can comment on or make changes to this bug.
Description
•