summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--sphinx/jinja2glue.py22
-rw-r--r--sphinx/themes/basic/genindex.html2
3 files changed, 24 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index 7ce0eb45c..0999e9ea0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@ Release 1.4.7 (in development)
Bugs fixed
----------
+* #2870: flatten genindex columns' heights.
Release 1.4.6 (released Aug 20, 2016)
=====================================
diff --git a/sphinx/jinja2glue.py b/sphinx/jinja2glue.py
index f3ce87a8c..df1aa490c 100644
--- a/sphinx/jinja2glue.py
+++ b/sphinx/jinja2glue.py
@@ -35,6 +35,27 @@ def _toint(val):
return 0
+def _slice_index(values, slices):
+ seq = list(values)
+ length = 0
+ for value in values:
+ length += 1 + len(value[1][1]) # count includes subitems
+ items_per_slice = length // slices
+ offset = 0
+ for slice_number in range(slices):
+ count = 0
+ start = offset
+ if slices == slice_number + 1: # last column
+ offset = len(seq)
+ else:
+ for value in values[offset:]:
+ count += 1 + len(value[1][1])
+ offset += 1
+ if count >= items_per_slice:
+ break
+ yield seq[start:offset]
+
+
def accesskey(context, key):
"""Helper to output each access key only once."""
if '_accesskeys' not in context:
@@ -127,6 +148,7 @@ class BuiltinTemplateLoader(TemplateBridge, BaseLoader):
extensions=extensions)
self.environment.filters['tobool'] = _tobool
self.environment.filters['toint'] = _toint
+ self.environment.filters['slice_index'] = _slice_index
self.environment.globals['debug'] = contextfunction(pformat)
self.environment.globals['accesskey'] = contextfunction(accesskey)
self.environment.globals['idgen'] = idgen
diff --git a/sphinx/themes/basic/genindex.html b/sphinx/themes/basic/genindex.html
index fac7f1899..c72d980b3 100644
--- a/sphinx/themes/basic/genindex.html
+++ b/sphinx/themes/basic/genindex.html
@@ -44,7 +44,7 @@
{%- for key, entries in genindexentries %}
<h2 id="{{ key }}">{{ key }}</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- {%- for column in entries|slice(2) if column %}
+ {%- for column in entries|slice_index(2) if column %}
<td style="width: 33%" valign="top"><dl>
{%- for entryname, (links, subitems, _) in column %}
{{ indexentries(entryname, links) }}