From 4ddcdcc40a568c5f73fc90e19c71d7dd3c3db7bb Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Mon, 16 Feb 2009 10:15:44 +0000 Subject: [PATCH] fix parsing length in html. Fixes #3781 --- src/htmltextview.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/htmltextview.py b/src/htmltextview.py index c04c82542..9b0bc5aa0 100644 --- a/src/htmltextview.py +++ b/src/htmltextview.py @@ -319,27 +319,28 @@ class HtmlHandler(xml.sax.handler.ContentHandler): callback(frac, *args) return - val = float(value[:-2]) - sign = cmp(val,0) - # validate length - val = sign*max(minl,min(abs(val*display_resolution),maxl)) + def get_val(): + val = float(value[:-2]) + sign = cmp(val,0) + # validate length + return sign*max(minl,min(abs(val*display_resolution),maxl)) if value.endswith('pt'): # points - callback(val*display_resolution, *args) + callback(get_val()*display_resolution, *args) elif value.endswith('em'): # ems, the width of the element's font attrs = self._get_current_attributes() font_size = attrs.font.get_size() / pango.SCALE - callback(val*display_resolution*font_size, *args) + callback(get_val()*display_resolution*font_size, *args) elif value.endswith('ex'): # x-height, ~ the height of the letter 'x' # FIXME: figure out how to calculate this correctly # for now 'em' size is used as approximation attrs = self._get_current_attributes() font_size = attrs.font.get_size() / pango.SCALE - callback(val*display_resolution*font_size, *args) + callback(get_val()*display_resolution*font_size, *args) elif value.endswith('px'): # pixels - callback(val, *args) + callback(get_val(), *args) else: try: