36 Changes from CLIM 1.0
This appendix lists the incompatible changes from CLIM 1.0 (and CLIM 0.9 for the
API related to the windowing substrate and gadgets), and the rationale for those
changes. They are listed on a chapter-by-chapter basis.
When the items say that a compatibility stub will be provided, this does not
mean that this compatibility needs to be part of CLIM itself. It could be
provided by a small compatibility package that defines stubs that translate from
the old behavior to the new behavior at compile-time or run-time, or by some
sort of conversion utility, or both. In the first case, compiler warnings
should be generated to indicate that an obsolete form is being used.
Issue: SWM
There are still lots of things from the windowing part, and the
frames, panes, and gadgets chapters that need to be included here.
Regions
- point-position* has been renamed to point-position , since the
term ``position'' unambiguously refers to an (x,y) coordinate pair. A
compatibility function will be provided.
- region-contains-point*-p has been renamed to
region-contains-position-p , since the term ``position'' unambiguously
refers to an (x,y) coordinate pair. A compatibility function will be
provided.
- The use of region-set-function has been deprecated in favor of using
the three classes standard-region-union , standard-region-intersection ,
and standard-region-difference , in keeping with the spirit of CLOS.
region-set-function will be provided as a compatibility function.
Bounding Rectangles
- with-bounding-rectangle* used to have optional max-x and
max-y arguments. They are now required.
- The function bounding-rectangle-set-edges has been removed, since
bounding rectangles have been made immutable. There is no replacement for it.
- bounding-rectangle-position* has been renamed to
bounding-rectangle-position , since the term ``position'' unambiguously
refers to an (x,y) coordinate pair. A compatibility function will be
provided.
- The functions bounding-rectangle-left , bounding-rectangle-top ,
bounding-rectangle-right , and bounding-rectangle-bottom have been
replaced by bounding-rectangle-min-x , bounding-rectangle-min-y ,
bounding-rectangle-max-x , and bounding-rectangle-max-y . This is
because left, top, right, and bottom are ill-specified. Compatibility functions
will be provided.
Affine Transformations
- The function make-3-point-transformation has had its argument list
changed from (point-1 point-1-image point-2 point-2-image point-3 point-3-image)
to (point-1 point-2 point-3 point-1-image point-2-image point-3-image).
This was done because the original argument list did not group together inputs
and output, which was confusing.
- The function make-3-point-transformation* has had its argument list
changed from (x1 y1 x1-image y1-image x2 y2 x2-image y2-image x3 y3 x3-image y3-image)
to (x1 y1 x2 y2 x3 y3 x1-image y1-image x2-image y2-image x3-image y3-image).
This was done because the original argument list did not group together inputs
and output, which was confusing.
- compose-scaling-transformation , compose-translation-transformation , and
compose-rotation-transformation have been replaced by the six functions
compose-translation-with-transformation , compose-scaling-with-transformation ,
compose-rotation-with-transformation , compose-transformation-with-translation ,
compose-transformation-with-scaling , and compose-transformation-with-rotation .
This was done because the six functions implement all of the optimized useful
cases of composition of transformations, and new names are required for all six.
Compatibility functions will be provided for the three CLIM 1.0 functions.
- transform-point* and untransform-point* have been renamed to
transform-position and untransform-position . Compatibility functions
will be provided.
Properties of Sheets
Sheet Protocols
Ports, Grafts, and Mirrored Sheets
Text Styles
- The macros with-text-style , with-text-family ,
with-text-face , and with-text-size have been changed to take the
medium argument first and the text style (or family, face, or size)
argument second. This was done in order to be consistent with all of the other
macros that take a medium argument as the first argument. Compatibility
code will be provided that attempts to detect the old syntax and massages it
into the new syntax, although it will probably not be able to detect all cases.
- add-text-style-mapping has been replaced by (setf~text-style-mapping) to be consistent with Common Lisp conventions. A compatibility function will be
provided.
Drawing in Color
- +foreground+ and +background+ have been renamed to
+foreground-ink+ and +background-ink+ , for consistency with
+flipping-ink+ . Compatibility constants will be provided.
- make-color-rgb and make-color-ihs have been renamed to
make-rgb-color and make-ihs-color , by popular demand. Compatibility
functions will be provided.
Extended Stream Output
- stream-cursor-position* and stream-increment-cursor-position* have been renamed to stream-cursor-position and
stream-increment-cursor-position . Compatibility functions will be
provided.
- The function stream-set-cursor-position* has been replaced by
(setf*~stream-cursor-position) to be consistent with Common Lisp
conventions. A compatibility function will be provided.
- The function stream-vsp has been replace by
stream-vertical-spacing . A compatibility function will be provided.
- The macros with-end-of-line-action and with-end-of-page-action have been changed to take the stream argument first and the action
argument second. This was done in order to be consistent with all of the other
macros that take a stream argument as the first argument. Compatibility
code will be provided that attempts to detect the old syntax and massages it
into the new syntax, although it will probably not be able to detect all cases.
Output Recording
- The three protocol classes output-record , output-record-element ,
and displayed-output-record-element have been replaced by the two classes
output-record and displayed-output-record . The predicates for the
classes have been similarly changed.
- output-record-position* has been renamed to
output-record-position . A compatibility function will be provided.
- The function output-record-set-position* has been replaced by
(setf*~output-record-position) to be consistent with Common Lisp
conventions. A compatibility function will be provided.
- The functions output-record-start-position* ,
output-record-set-start-position* , output-record-end-position* ,
output-record-set-end-position* have been replaced by
output-record-start-cursor-position , (setf*~output-record-start-cursor-position) ,
output-record-end-cursor-position , (setf*~output-record-end-cursor-position) to
better reflect their functionality. Compatibility functions will be provided.
- replay-1 has been renamed to replay-output-record .
- output-record-elements and output-record-element-count have been
renamed to output-record-children and output-record-count , since the
term ``element'' is no longer used when referring to output records.
Compatibility functions will be provided.
- add-output-record-element and delete-output-record-element have
been renamed to add-output-record and delete-output-record , and the
argument order has been changed. Compatibility functions will be provided.
- map-over-output-record-elements-containing-point* and
map-over-output-record-elements-overlapping-region have been renamed to
map-over-output-records-containing-position and
map-over-output-records-overlapping-region . Compatibility functions will
be provided.
- linear-output-record and coordinate-sorted-set-output-record have been renamed to standard-sequence-output-record and
standard-tree-output-record .
- stream-draw-p and stream-record-p and their setf functions
have been renamed to stream-drawing-p and stream-recording-p to better
reflect their functionality. Compatibility functions will be provided.
- output-recording-stream-output-record ,
output-recording-stream-current-output-record-stack , and
output-recording-stream-text-output-record have been renamed to
stream-output-history , stream-current-output-record , and
stream-text-output-record . Compatibility functions will be provided.
- add-output-record has been renamed to stream-add-output-record .
Because of the change to add-output-record-element above, no compatibility
function can be provided.
- close-current-text-output-record has been renamed to
stream-close-text-output-record . A compatibility function will be
provided.
- add-string-output-to-output-record and
add-character-output-to-output-record have been renamed to
stream-add-string-output and stream-add-character-output .
Compatibility functions will be provided.
- with-output-recording-options has had its :draw-p and
:record-p keyword arguments changed to :draw and :record to
conform to Common Lisp naming conventions. Compatibility code will be provided.
Table Formatting
- The :inter-column-spacing , :inter-row-spacing , and
:multiple-columns-inter-column-spacing options to formatting-table have been renamed to :x-spacing , :y-spacing , and
:multiple-columns-x-spacing in order to be consistent with the pane
options. Compatibility options will be provided.
- The :minimum-width and :minimum-height options to
formatting-cell have been renamed to :min-width and :min-height in order to be consistent with the pane options. Compatibility options will be
provided.
- The :inter-column-spacing and :inter-row-spacing options to
formatting-item-list and format-items have been renamed to
:x-spacing and :y-spacing in order to be consistent with the pane
options. Compatibility options will be provided.
- The :no-initial-spacing option to formatting-item-list and
format-items has been renamed to :initial-spacing , because
inverted-sense flags are too hard to keep straight. The default for
:no-initial-spacing was true , therefore the default for
:initial-spacing is false . Compatibility options will be
provided.
Graph Formatting
- The function format-graph-from-root has been renamed to
format-graph-from-roots , since it now takes a sequence of root objects,
rather than a single root object. The function format-graph-from-root will
remain as a compatibility function that takes a single root object.
Incremental Redisplay
- redisplay-1 has been renamed to redisplay-output-record .
Extended Stream Input
- stream-pointer-position* has been renamed to
stream-pointer-position . A compatibility function will be provided.
- The function stream-set-pointer-position* has been replaced by
(setf*~stream-pointer-position) to be consistent with Common Lisp
conventions. A compatibility function will be provided.
- All of the clause arglists for tracking-pointer are specified with
&key, that is, they are named arguments rather than positional ones.
This should not cause any problems, except for the one case that the
character argument to the :keyboard clause has been renamed to
gesture .
- The function dragging-output-record has been renamed to
drag-output-record to be consistent with our naming conventions. A
compatibility function will be provided.
Presentation Types
- The argument list for with-output-as-presentation has been changed to
make stream , object , and type be required arguments instead of
keyword arguments. This is because it is always necessary to supply those
arguments in order for with-output-as-presentation to work. Compatibility
code will be provided to support the old syntax.
- The :activation-characters , :additional-activation-characters ,
:blip-characters , and :additional-blip-characters keyword arguments to
the accept functions have been renamed to :activation-gestures ,
:additional-activation-gestures , :delimiter-gestures , and
:additional-delimiter-gestures . Compatibility code will be provided to
support the old keyword arguments.
- The arglists for presentation translators and their documentation and
tester components have been changed to take a single positional object argument and a list of named (keyword) arguments. Except for translators that
omit the object argument or have it in other than the initial position of
the arglist, this will not pose a problem. This change can be detected.
- The frame argument to find-presentation-translators has
been changed to be a command-table argument. A check at run-time
can detect when a frame is supplied to
find-presentation-translators instead of a command table.
- The :shift-mask keyword argument to test-presentation-translator ,
find-applicable-translators , presentation-matches-context-type , and
find-innermost-applicable-presentation has been renamed to
:modifier-state in order to be consistent with the device event terminology.
Compatibility code will be provided to support the old keyword.
- define-gesture-name is completely different from CLIM 1.1. There
will be no compatibility code provided to support the old version of
define-gesture-name .
- dialog-view and +dialog-view+ have been renamed to
textual-dialog-view and +textual-dialog-view+ in order to accurately
reflect what they are. Likewise, menu-view and +menu-view+ have been
renamed to textual-menu-view and +textual-menu-view+ . Compatibility
classes and constants will be provided.
Input Editing and Completion Facilities
- *activation-characters* , *standard-activation-characters* ,
with-activation-characters , and activation-character-p have been
renamed to *activation-gestures* , *standard-activation-gestures* ,
with-activation-gestures , and activation-gesture-p . Compatibility
functions will remain for with-activation-characters and
activation-character-p , but since the variables were not previously
documented, no compatibility will be provided for them.
- *blip-characters* , with-blip-characters , and
blip-character-p have been renamed to *delimiter-gestures* ,
with-delimiter-gestures , and delimiter-gesture-p . Compatibility
functions will remain for with-blip-characters and blip-character-p ,
but since *blip-characters* was not previously documented, no compatibility
will be provided.
- *abort-characters* has been renamed to *abort-gestures* .
- *completion-characters* , *help-characters* , and
*possibilities-characters* have been renamed to *completion-gestures* ,
*help-gestures* , and *possibilities-gestures* .
- Input editing streams no longer use the interactive stream class.
Instead, interactive streams are defined to be any stream that can potentially
support input editing, and the class input-editing-stream now refers to
input editor streams.
- input-editor-buffer , input-position , insertion-pointer , and
rescanning-p have been renamed to stream-input-buffer ,
stream-scan-pointer , stream-insertion-pointer , and
stream-rescanning-p . Compatibility functions will be provided.
Menus
- The :inter-column-spacing and :inter-row-spacing options to
menu-choose have been renamed to :x-spacing and :y-spacing in
order to be consistent with the pane options. Compatibility options will be
provided.
Command Processing
- The variable *unsupplied-argument* has been renamed to
*unsupplied-argument-marker* in keeping with its functionality, and to
match the new *numeric-argument-marker* . *unsupplied-argument* will
be retained, but its use is deprecated.
- The :inter-column-spacing and :inter-row-spacing options to
display-command-table-menu have been renamed to :x-spacing and
:y-spacing in order to be consistent with the pane options. Compatibility
options will be provided.
- The :test argument to the following functions has been removed, since
the use of gesture names makes it unnecessary:
add-command-to-command-table , (add-keystroke-to-command-table , and
remove-keystroke-from-command-table . The :keystroke-test argument has
been removed from read-command and read-command-using-keystrokes for
the same reason.
Application Frames
- The :root argument has been removed from open-window-stream and
make-application-frame .
- The :layout option has been removed, and is replaced by the more
general :layouts option. A compatibility hook will be provided that
handles the old :layout option.
- The function set-frame-layout has been replaced by
(setf~frame-current-layout) to be consistent with Common Lisp conventions.
A compatibility function will be provided.
- The function frame-top-level-window has been renamed to
frame-top-level-sheet . A compatibility function will be provided.
- command-enabled-p , enable-command , and disable-command have been replaced by command-enabled and (setf~command-enabled) .
Compatibility functions will be provided.
- window-viewport-position* has been renamed to
window-viewport-position . A compatibility function will be provided.
- window-set-viewport-position* has been replaced by
(setf*~window-viewport-position). A compatibility function will be provided.
Panes
- realize-pane and realize-pane-1 have been renamed to
make-pane and make-pane-1 . A compatibility function will be provided
for realize-pane .
- The pane options :hs , :hs+ , :hs- , :vs , :vs+ , and
:vs- have been replaced by the options :width , :max-width ,
:min-width , :height , :max-height , and :min-height to be more
perspicuous, and to conform the the same options for the formatted output
facilities. Compatibility options will be supplied.
- The :nchars and :nlines pane options have been removed in favor
of an extended syntax to the :width and :height options.
- The pane layout options :halign and :valign have been renamed to
:align-x and :align-y to conform with table formatting. Compatibility
options will be supplied.
- The pane layout options :hspace and :vspace have been renamed to
:x-spacing and :y-spacing to conform with table formatting.
Compatibility options will be supplied.
- The term ``space req'' has been renamed to ``space requirement''. All of
the functions with space-req in their names have been renamed to have
space-requirement instead.
- make-space-requirement no longer takes the :hs and :vs arguments, et al. It now takes :width and :height , et al.