id,summary,reporter,owner,description,type,status,priority,milestone,component,resolution,keywords,cc,planetversion,pltversion
446,Crashes when using text-fields without label,mimmottos@…,williams,"The following code crashes:


#lang racket/gui

;;;
;;;


;(require (planet williams/table-panel/table-panel))
(require ""table-panel.ss"")

;;  The top-level frame
(define frame
  (instantiate frame%
    (""Editor Grid"")))

;;  The table panel
(define table-panel
  (instantiate table-panel%
    (frame)
    (alignment '(center center))
    (dimensions '(2 1))))


;; Now lets populate it
(for ((i (in-range 2)))
  (let* ((rows (if (zero? i) 5 1))
         (cols 2)
         (child (instantiate table-panel%
                  (table-panel)
                  (style '(border))
                  (dimensions (list rows cols))
                  (column-stretchability #t)
                  (row-stretchability #f))))
    (for* ((k (in-range rows))
           (j (in-range cols)))
      ;(printf ""k,j: ~a,~a~n"" k j)
      (if (zero? i) 
          (new text-field%
               ;((format ""~a  ~a"" k j) child)
               (parent child)
               ;(label ""ab"")
               (label #f)
               (stretchable-width #t)
               (stretchable-height #f)
               (callback
                (lambda (tf event)
                  (printf ""~a~n"" (send tf get-value)))))
          (instantiate button%
            ((format ""Button ~a"" j) child)
            (stretchable-width #t)
            (stretchable-height #f)
            (callback
             (lambda (button event)
               (printf ""You clicked button ~a~n"" (send button get-label)))))))))

;  Show the top-level frame.
(send frame show #t)
=============================================
The cause of the error is division by zero when calculating ratio in (on or near line 280):

            (vector-for-each
             (lambda (i stretchable? width)
               (when stretchable?
                 (let* ((ratio (/ width total-column-stretchable-width))
                        (quota (round (* ratio delta-width))))
                   (vector-set! column-widths i
                                (+ (vector-ref column-widths i) quota))
                   (set! total-column-stretchable-width
                         (- total-column-stretchable-width width))
                   (set! delta-width (- delta-width quota)))))
             column-stretchabilities? column-widths)
======================================
If I replace the line:
     (when stretchable?
with the line:
      (when (and stretchable? (positive? total-column-stretchable-width))
at least my code starts to do what I expected. Still I'm not sure whether this is the right way to handle the crash since I'm a Racket novice and thus can't claim to understand your code completely.

Jussi Salmela
",defect,closed,major,,williams/table-panel.plt,fixed,,,(1 1),5.3.0.16--2012-07-19(9413b30/a) [3m].
