Rendering of illegal widths (incl "px", which used to be legal)
Hello All, The row of three pictures on this web-page: http://www.avrprojects.net/index.php?view=article&id=61 renders badly in dillo, and differently from Chrome and firefox, because two of them have: width="180px" which the source-code for dillo 3.0.4 (html.cc at about line 1450) tells me used to be legal html, but isn't anymore. Dillo: - reports this as a web bug (with which I agree) - sets the length to auto (which I think means using the default width) To minimise the damage from illegal pages, without hiding the problem, I propose to assume that the numbers in all widths are sensible, and to complain about, but ignore, the trailing garbage. I also discovered that the bug message and another, suppressed, message had type problems, which I have addressed in a way that looks reasonable on osx. My proposed patch is below. Please be aware that Jorge and I started a conversation about whether this was the right thing to do, which wedged. I tested this proposed change by hacking up saved copies of the web-page in various ways. One of them, which makes a mess of the bug message, is attached, but they are not really a clean test-case. I am not aware of any automated test into which this change should be added. If someone can point me toward one, then I will think about how to test it cleanly. Regards, James. ----------------------- $ diff html.cc.orig html.cc 1483,1485c1483,1488 < if (*end && !isspace (*end)) { < BUG_MSG("Garbage after length: %s\n", attr); < l = CSS_CREATE_LENGTH(0.0, CSS_LENGTH_TYPE_AUTO); ---
while (end && isspace(*end)) ++end; if (end && *end) { BUG_MSG("Garbage after length: '%s'; " "ignoring garbage; using %g (possibly in pixels)\n", attr, CSS_LENGTH_VALUE(l));
1489c1492 < _MSG("a_Html_parse_length: \"%s\" %d\n", attr, CSS_LENGTH_VALUE(l)); ---
_MSG("a_Html_parse_length: \"%s\" %g\n", attr, CSS_LENGTH_VALUE(l));
ps I am contemplating getting involved in other trivial rendering problems, and thinking about the todos in dpid/main.c:204 and dpid/main.c:297. My interest in the todos is that dillo functions with gmail, but keeps (de facto) logging me out by discarding my session cookie. Could someone please point me to generic advice about: - which source tree I should be building (Jorge mentioned GROWS, but I don't know what that means) - how to use mercurial to develop multiple patches in parallel and keep them separate, while running a built program that includes all of them ?
participants (1)
-
james.from.wellington@gmail.com