All Manuals > LispWorks Release Notes and Installation Guide > 15 Release Notes


15.6 New CAPI features

See the CAPI User Guide and Reference Manual for more details of these, unless directed otherwise.

15.6.1 Touch gestures

On Cocoa and Windows the capi:output-pane input-model can now contain specifications for multi-touch gestures that come from devices that can generate them (trackpad or touchscreen). These include zoom, rotate, pan, swipe (Cocoa only), two finger tap (Windows only), press and tap (Windows only), and the beginning or end of a sequence of gestures.

15.6.2 editor-pane allows more fonts on Cocoa

You can now use any available font in capi:editor-pane in the Cocoa GUI of LispWorks for Macintosh.

In LispWorks 6.1 and earlier versions, you could select only fonts whose widths are (almost) integral, which is not generally guaranteed.

15.6.3 Full screen windows on Cocoa

CAPI now supports full screen windows on Mac OS X 10.7 and later, automatically hiding the menu bar and dock. Use the value :can-full-screen in the window-styles list (see the capi:interface manual page).

15.6.4 Transient display on output panes

The new Cached Display interface allows you to add transient drawing on top of the permanent drawing of a capi:output-pane. Typically this will be used to give visual feedback to the user as she drags the mouse while pressing a button in order to select something. You could draw a rectangle, or something more complex.

The Cached Display interface is useful in cases where the display-callback is too slow to add the transient graphics.

For an overview see "Transient display on output-pane and subclasses" in the CAPI User Guide and Reference Manual .

15.6.5 Scroll hints for output panes and layouts

You can now specify scroll parameters by supplying hints when creating a capi:output-pane or a capi:layout.

See the section "Scroll values and initialization keywords" in the CAPI User Guide and Reference Manual .

15.6.6 Minima for column width and row height

The new capi:grid-layout initargs :min-column-width and :min-row-height can be specified to provide minimum values for the width of each column and the height of each row.

15.6.7 Improvements in multi-column-list-panel

The number of columns in a capi:multi-column-list-panel, their titles and what they show can be changed after the pane is displayed using the new function capi:modify-multi-column-list-panel-columns.

Also the column-function of a capi:multi-column-list-panel can now be a list of function designators, each of which is called with the item to generate the object for the corresponding column.

15.6.8 Accessing a sorted-object to determine the sorting

The new keyword argument :object-sort-caller for capi:make-sorting-description allows you to access the capi:sorted-object to decide how to do the sorting.

15.6.9 Pinboard display-callback changed - no longer use capi::pinboard-pane-display

The new generic function capi:pinboard-layout-display is now the default display-callback of capi:pinboard-layout. Programmers who specialized the internal capi::pinboard-pane-display (which is the default display-callback in LispWorks 6.1 and earlier versions) must now change to capi:pinboard-layout-display.

15.6.10 Modifying pinboard display

The new function capi:draw-pinboard-layout-objects draws the pinboard objects within a specified region of a pinboard layout. It is useful when you want to have your own display-callback for a capi:pinboard-layout or a subclass.

15.6.11 Modifying resize behavior of an output pane

The new generic function capi:output-pane-resize is called when a capi:output-pane is resized. You may need to define your own method if you define your own subclass of capi:output-pane which needs to do something when resizing, and you want to allow different resize-callbacks for individual instances of your class.

15.6.12 Cleaning up objects associated with a pinboard layout

The functions capi:record-dependent-object and capi:unrecord-dependent-object, together with the generic function capi:destroy-dependent-object form a new mechanism for destroying objects when a capi:pinboard-layout is destroyed.

15.6.13 Modifier change callbacks in output-pane

capi:output-pane now supports modifier change callbacks, allowing your application to respond when the state of Control, Shift, Meta, Command or Caps Lock changes.

For the details, see the description of capi:output-pane input-model.

15.6.14 Detecting modifier state

The new function capi:pane-modifiers-state returns an integer describing which modifier keys (Control, Shift, Meta, Command or Caps Lock) are currently active.

15.6.15 Querying fonts, text and image size, before display

The new function capi:create-dummy-graphics-port allows you to query fonts and measure text or images, without displaying anything on screen.

15.6.16 Finding an active screen

capi:convert-to-screen now accepts the special argument :if-any, which finds a screen if there is any active screen.

15.6.17 Predicate for availability of browser-pane

The new function capi:browser-pane-available-p tests whether capi:browser-pane is implemented for a specified screen.

15.6.18 Restoring disabled display of a pane

The new functions capi:pane-restore-display and capi:pane-can-restore-display-p can allow you to restore a pane's display which has been disabled, typically after an error in the display callback.

15.6.19 New default menu accelerators on Windows and GTK+

On Microsoft Windows and GTK+, menu items named File > Close and File > Exit now automatically get accelerator keys as follows:

File > Close


File > Exit


For the full set of defaults see "Standard default accelerators" in CAPI User Guide and Reference Manual .

15.6.20 Cancelling a popup menu

The new function capi:popup-menu-force-popdown cancels a popup menu if it is currently displayed. It can be called from any process, such as a timer.

15.6.21 New initargs to toolbar and toolbar-component

capi:toolbar now supports new initargs :names and :texts, which allow you to specify the name and text for each implicitly-created capi:toolbar-button.

capi:toolbar-component also now supports the new initargs :names and :texts. Note that buttons inside an interface toolbar (created with the capi:interface initarg :toolbar-items) must have unique names.

15.6.22 Display a transient message in a non-focus window

The new function capi:display-non-focus-message displays a message for a short period of time in a window which does not take the input focus, to notify the user of something that does not actually require her attention.

15.6.23 Positioning a non-focus list prompter

The function capi:prompt-with-list-non-focus now accepts keyword arguments :right and :bottom which allow you to supply an integer specifying the positioning of the right or bottom of the window. right and bottom can both also be the keyword :center which means center the window relative to the owner window, in the x or y dimension.

15.6.24 Experiment with your code displayed as a dialog

The development utility function capi:contain can now display the interface that it creates as a dialog rather than an ordinary window. See the keyword argument :as-dialog.

15.6.25 Filters in multiple file prompter

The :filters keyword argument to capi:prompt-for-files is now implemented on Cocoa and GTK+.

In LispWorks 6.1 and previous version it works only on Microsoft Windows.

15.6.26 Stop an ongoing composition

The new function capi:output-pane-stop-composition stops an ongoing composition, returning the currently composed string. You will typically need to call it when a gesture that is not processed by the input method (for example a mouse click) changes the interaction such that it no longer makes sense to continue the composition.

LispWorks Release Notes and Installation Guide - 2 Mar 2015