Index: main/grid/display.lisp
===================================================================
--- main/grid/display.lisp	(revision main,53)
+++ main/grid/display.lisp	(revision main,55)
@@ -5,5 +5,4 @@
 (defclass grid ()
   ((data :initarg :data)
-   (column-widths :type (vector (integer 1)) :initarg :column-widths)
    (header-rows :type (integer 0) :initarg :header-rows)
    (header-columns :type (integer 0) :initarg :header-columns)
@@ -12,9 +11,7 @@
    (column-scroll :type (integer 0) :initform 0 :accessor column-scroll)))
 
-(defun make-grid (window data column-widths
-                  &key (header-rows 0) (header-columns 0))
+(defun make-grid (window data &key (header-rows 0) (header-columns 0))
   (make-instance 'grid
                  :data data
-                 :column-widths (coerce column-widths 'vector)
                  :header-rows header-rows
                  :header-columns header-columns
@@ -41,6 +38,8 @@
 
 (defun column-offset (grid column)
-  (with-slots (column-widths header-columns column-scroll) grid
-    (let ((base (+ header-columns column-scroll)))
+  (with-slots (data header-columns column-scroll) grid
+    (let ((base (+ header-columns column-scroll))
+          (column-widths (mapcar (peval 'column-width data)
+                                 (range header-columns))))
       (multiple-value-bind (in-header in-data) (column-split grid column)
         (let ((w1 (reduce '+ column-widths :end in-header))
@@ -99,15 +98,15 @@
 
 (defun draw (grid)
-  (with-slots (data column-widths header-columns window column-scroll) grid
+  (with-slots (data header-columns window column-scroll) grid
     (erase window)
     (let ((x 0))
       (dotimes (i header-columns)
         (draw-column grid i x)
-        (incf x (svref column-widths i)))
+        (incf x (column-width data i)))
       (do ((i (+ header-columns column-scroll) (incf i)))
           ((or (>= i (columns data))
                (> x (nth-value 1 (size window)))))
         (draw-column grid i x)
-        (incf x (svref column-widths i))))))
+        (incf x (column-width data i))))))
 
 
