diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index 3fff5cbe0..185d74878 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -233,45 +233,41 @@ class Renderer(object):
len(pages) > 1 and u'[---]' in text:
pages = []
while True:
- # Check if the first two potential virtual slides will fit
- # (as a whole) on one slide.
- html_text = expand_tags(
- u'\n'.join(text.split(u'\n[---]\n', 2)[:-1]))
+ slides = text.split(u'\n[---]\n', 2)
+ # If there are (at least) two occurrences of [---] we use
+ # the first two slides (and neglect the last for now).
+ if len(slides) == 3:
+ html_text = expand_tags(u'\n'.join(slides[:2]))
+ # We check both slides to determine if the virtual break is
+ # needed (there is only one virtual break).
+ else:
+ html_text = expand_tags(u'\n'.join(slides))
html_text = html_text.replace(u'\n', u'
')
if self._text_fits_on_slide(html_text):
# The first two virtual slides fit (as a whole) on one
- # slide. Replace the occurrences of [---].
- text = text.replace(u'\n[---]', u'', 2)
+ # slide. Replace the first occurrence of [---].
+ text = text.replace(u'\n[---]', u'', 1)
else:
- # The first two virtual slides did not fit as a whole.
- # Check if the first virtual slide will fit.
- html_text = expand_tags(text.split(u'\n[---]\n', 1)[1])
- html_text = html_text.replace(u'\n', u'
')
- if self._text_fits_on_slide(html_text):
- # The first virtual slide fits, so remove it.
- text = text.replace(u'\n[---]', u'', 1)
+ # The first virtual slide fits, which means we have to
+ # render the first virtual slide.
+ text_contains_break = u'[---]' in text
+ if text_contains_break:
+ text_to_render, text = text.split(u'\n[---]\n', 1)
else:
- # The first virtual slide does not fit, which means
- # we have to render the first virtual slide.
- text_contains_break = u'[---]' in text
- if text_contains_break:
- text_to_render, text = text.split(u'\n[---]\n', 1)
+ text_to_render = text
+ text = u''
+ lines = text_to_render.strip(u'\n').split(u'\n')
+ slides = self._paginate_slide(lines, line_end)
+ if len(slides) > 1 and text:
+ # Add all slides apart from the last one the list.
+ pages.extend(slides[:-1])
+ if text_contains_break:
+ text = slides[-1] + u'\n[---]\n' + text
else:
- text_to_render = text
- text = u''
- lines = text_to_render.strip(u'\n').split(u'\n')
- slides = self._paginate_slide(lines, line_end)
- if len(slides) > 1 and text:
- # Add all slides apart from the last one the
- # list.
- pages.extend(slides[:-1])
- if text_contains_break:
- text = slides[-1] + u'\n[---]\n' + text
- else:
- text = slides[-1] + u'\n'+ text
- text = text.replace(u'
', u'\n')
- else:
- pages.extend(slides)
+ text = slides[-1] + u'\n'+ text
+ text = text.replace(u'
', u'\n')
+ else:
+ pages.extend(slides)
if u'[---]' not in text:
lines = text.strip(u'\n').split(u'\n')
pages.extend(self._paginate_slide(lines, line_end))