Skip to content

Commit 85ef223

Browse files
author
jomae
committed
1.7.1dev: merge [17867] from 1.6-stable (fix for #13784)
[skip ci] git-svn-id: http://trac.edgewall.org/intertrac/log:/trunk@17868 af82e41b-90c4-0310-8c96-b1721e28e2e2
2 parents 22b2955 + 6bf1391 commit 85ef223

File tree

2 files changed

+60
-34
lines changed

2 files changed

+60
-34
lines changed

trac/htdocs/css/wiki.css

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,16 @@ h3.section:target {
107107
}
108108

109109

110+
@media screen {
111+
#content.narrow .trac-wiki-center {
112+
background: #fff;
113+
opacity: 0.8;
114+
}
115+
}
110116
@media print {
111117
#content.narrow #wikipage { max-width: none }
112-
#content.narrow #trac-wiki-expander:before, #content #trac-wiki-expander { display: none }
118+
#content.narrow .trac-wiki-center { margin-left: unset !important }
119+
#content #trac-wiki-expander { display: none }
113120
h2.section:target {
114121
background: linear-gradient(to top,
115122
#fff 0,

trac/htdocs/js/wiki.js

Lines changed: 52 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,58 +16,77 @@
1616
}).prependTo($wikipage);
1717

1818
// Auto-centering of top-level elements larger than #wikipage's max-width
19-
var wpow = $wikipage.outerWidth();
20-
var large_elements = [];
19+
var wpow;
20+
var large_elements;
2121
var detectLargeElement = function() {
22-
var rol = $(this).offset().left - $wikipage.offset().left;
23-
var excess = $(this).outerWidth() + rol - wpow;
22+
var $e = $(this);
23+
if ($e.css('float') !== 'none')
24+
return 0;
25+
switch ($e.css('position')) {
26+
case 'absolute':
27+
case 'fixed':
28+
return 0;
29+
}
30+
var rol = $e.offset().left - $wikipage.offset().left;
31+
var excess = $e.outerWidth() + rol - wpow;
2432
if (excess > 0) {
25-
$(this).data('excess', excess);
26-
$(this).data('rol', rol);
33+
$e.data('excess', excess);
34+
$e.data('rol', rol);
2735
large_elements.push(this);
2836
}
2937
return excess;
3038
};
3139
var centerLargeElement = function($e, wpleft) {
32-
var shift_left;
33-
var excess = $e.data('excess');
34-
var rol = $e.data('rol');
35-
if (excess > rol)
36-
shift_left = rol + (excess - rol) / 2;
37-
else
38-
shift_left = excess;
39-
if (shift_left > wpleft)
40-
shift_left = wpleft;
40+
var shift_left;
41+
var excess = $e.data('excess');
42+
var rol = $e.data('rol');
43+
if (excess > rol)
44+
shift_left = rol + (excess - rol) / 2;
45+
else
46+
shift_left = excess;
47+
if (shift_left > wpleft)
48+
shift_left = wpleft;
4149

42-
$e.css({'margin-left': -shift_left,
43-
'background': 'rgba(255, 255, 255, .8)'});
50+
$e.css('margin-left', -shift_left).addClass('trac-wiki-center');
4451
};
4552
var resetLargeElements = function() {
46-
for (var i = 0; i < large_elements.length; i++) {
47-
$(large_elements[i]).css({'margin-left': 0, 'background': 'none'});
48-
}
53+
if (large_elements === undefined)
54+
return;
55+
$(large_elements)
56+
.css('margin-left', '')
57+
.removeClass('trac-wiki-center');
4958
};
5059
var detectLargeImage = function() {
5160
var excess = detectLargeElement.apply(this);
5261
if (excess > 0)
5362
centerLargeElement($(this), $wikipage.offset().left);
5463
};
55-
$("#wikipage > table").each(detectLargeElement);
56-
$("#wikipage > div").each(detectLargeElement);
57-
$("#wikipage > p > a > img").one("load", detectLargeImage).each(
58-
function() {
59-
if (this.complete)
60-
detectLargeImage.apply(this);
61-
}
62-
);
63-
64+
var detectLargeElements = function() {
65+
$wikipage.find("> table, > div").each(detectLargeElement);
66+
$wikipage.find("> p > a > img").one("load", detectLargeImage).each(
67+
function() {
68+
if (this.complete)
69+
detectLargeImage.apply(this);
70+
}
71+
);
72+
};
6473
var centerLargeElements = function() {
74+
if (large_elements === undefined) {
75+
wpow = $wikipage.outerWidth();
76+
large_elements = [];
77+
detectLargeElements();
78+
}
6579
var wikipage_left = $wikipage.offset().left;
66-
for (var i = 0; i < large_elements.length; i++)
67-
centerLargeElement($(large_elements[i]), wikipage_left);
80+
$.each(large_elements, function() {
81+
centerLargeElement($(this), wikipage_left);
82+
});
83+
};
84+
var centerLargeElementsIfNarrow = function() {
85+
if ($content.hasClass('narrow'))
86+
centerLargeElements();
6887
};
69-
$(window).resize(centerLargeElements);
70-
centerLargeElements();
88+
$(window).resize(centerLargeElementsIfNarrow);
89+
centerLargeElementsIfNarrow();
7190
};
7291

7392

0 commit comments

Comments
 (0)