web/formwidgets.py
branchstable
changeset 2366 e4229723b824
parent 2360 1d43aa551ba9
child 2518 38c28ee40138
--- a/web/formwidgets.py	Thu Jul 09 19:59:41 2009 +0200
+++ b/web/formwidgets.py	Thu Jul 09 20:13:54 2009 +0200
@@ -146,17 +146,22 @@
 
 class TextArea(FieldWidget):
     """<textarea>"""
+
     def render(self, form, field):
         name, values, attrs = self._render_attrs(form, field)
         attrs.setdefault('onkeyup', 'autogrow(this)')
-        attrs.setdefault('cols', 80)
-        attrs.setdefault('rows', 20)
         if not values:
             value = u''
         elif len(values) == 1:
             value = values[0]
         else:
             raise ValueError('a textarea is not supposed to be multivalued')
+        lines = value.splitlines()
+        linecount = len(lines)
+        for line in lines:
+            linecount += len(line) / 80
+        attrs.setdefault('cols', 80)
+        attrs.setdefault('rows', min(15, linecount + 2))
         return tags.textarea(value, name=name, **attrs)