[mcclim-devel] space requirements :min-:max options

Clemens Fruhwirth clemens at endorphin.org
Wed Jan 4 20:08:48 UTC 2006


According to the CLIM spec 29.3.1 Layout Pane Options:
"If either of the :max-height or :min-height options is not supplied,
it defaults to the value of the :height option."

However in panes.lisp, I see:

  ;; NOTE: The defaulting for :min-foo and :max-foo is different from MAKE-SPACE-REQUIREMENT.
  ;;       MAKE-SPACE-REQUIREMENT has kind of &key foo (min-foo 0) (max-foo +fill+)
  ;;       While user space requirements has &key foo (min-foo foo) (max-foo foo).
  ;;       I as a user would pretty much expect the same behavior, therefore I'll take the
  ;;       following route:
  ;;       When the :foo option is given, I'll let MAKE-SPACE-REQUIREMENT decide.

May I urge you to change revert that change. The :height and :width
initargs loss their usefulness this way. Also it's a bit
counter-intutive. Look at

(define-application-frame only-red () ()
  (:pane
   (vertically ()
	       (make-pane 'application-pane :background +red+ :min-height 100)
	       +fill+
	       (make-pane 'application-pane :background +blue+ :height 100))))

Wouldn't you expect to see two panes, one blue with height 100 and a red
one at least 100 pixel high?

The reason for this query is that I have troubles explaining the readers
of my CLIM tutorial why McCLIM violates the spec and why :height as well
as :width are mostly useless at the moment. 

See panes.lisp "merge-one-option" (Line 549) and the commented code
  ;; (setf user-max-foo  (or user-max-foo user-foo)
  ;;       user-min-foo  (or user-min-foo user-foo))

Thanks,
-- 
Fruhwirth Clemens - http://clemens.endorphin.org 
for robots: sp4mtrap at endorphin.org



More information about the mcclim-devel mailing list