Index: skins/common/diff.js =================================================================== --- skins/common/diff.js (revision 0) +++ skins/common/diff.js (revision 0) @@ -0,0 +1,20 @@ +/* +Workaround for overflow bug in Mozilla 1.1 and earlier, where scrolling +
s in cells collapse their height to a single line. + +Known to be fixed in 1.2.1 (Gecko 20021130), but the CSS hacks I've tried +with overflow-x disable the scrolling all the way until Mozilla 1.8 / FF 1.5 +and break Opera as well. + +So... we check for reaaaally old Gecko and hack in an alternate rule to let +the wide cells spill instead of scrolling them. Not ideal as it won't work +if JS is disabled, of course. +*/ + +if (navigator && navigator.product == "Gecko" && navigator.productSub < "20021130") { + var sheets = document.styleSheets; + var lastSheet = sheets[sheets.length-1]; + lastSheet.insertRule( + "table.diff td div { overflow: visible; }", + lastSheet.cssRules.length); +} \ No newline at end of file Property changes on: skins/common/diff.js ___________________________________________________________________ Name: svn:eol-style + native Index: skins/common/diff.css =================================================================== --- skins/common/diff.css (revision 22407) +++ skins/common/diff.css (working copy) @@ -62,4 +62,13 @@ /* As fallback, scrollbars will be added for very wide cells instead of text overflowing or widening */ overflow: auto; + + /* The above rule breaks on very old versions of Mozilla due + to a bug which collapses the table cells to a single line. + + In Mozilla 1.1 and below with JavaScript enabled, the rule + will be overridden with this by diff.js; wide cell contents + then spill horizontally without widening the rest of the + table: */ + /* overflow: visible; */ } Index: includes/DifferenceEngine.php =================================================================== --- includes/DifferenceEngine.php (revision 22407) +++ includes/DifferenceEngine.php (working copy) @@ -296,11 +296,22 @@ $wgOut->addWikitext( wfMsg( 'missingarticle', "(fixme, bug)" ) ); return false; } else { - $wgOut->addStyle( 'common/diff.css' ); + $this->showDiffStyle(); $wgOut->addHTML( $diff ); return true; } } + + /** + * Add style sheets and supporting JS for diff display. + */ + function showDiffStyle() { + global $wgStylePath; + $wgOut->addStyle( 'common/diff.css' ); + + // JS is needed to detect old versions of Mozilla to work around an annoyance bug. + $wgOut->addScript( "" ); + } /** * Get diff table, including header