From: kathy (Kathy Poliakoff)

Subject: Re: [spr22467] tabbing in multi-line-editable-text widget signals error

Date: 2000-8-8 16:21


Lynn Jones:

You wrote:

  In my project, I have a form on which I have programmatically
  created a multi-line-editable-text and a button (created in 
  code not in the dialog editor), to use as a login screen. 
  If I click in the edit control and then type the tab key, I
  get the following error:

  Error: No methods applicable for generic function
  #<STANDARD-GENERIC-FUNCTION COMMON-GRAPHICS::CLEAR-DEFAULT-BUTTON> with
  args (#<SB1-CHILD :SB1-FORM>) of classes (SB1-CHILD)
  [condition type: PROGRAM-ERROR]

This turns out to be a bug when the parent window is not of type
dialog-mixin, and the tab key is pressed in a lisp-widget whose
tabstop property is on.  We allow controls to be placed onto any
window, but document (see <acl-distribution>/doc/cg/form/form.htm) that
the special "dialog behavior" implemented in the OS such as tabbing to
the next widget is implemented only for dialog-mixin.  But pressing
TAB in a control shouldn't break on other parent windows of course
since users still may still press the tab key.

The simple workaround is to make the parent window be of type
dialog-mixin, either by creating an instance of "dialog" or a subclass
of it, or by mixing dialog-mixin into the currently-instantiated
class.

We will be correcting the behaviour you are experiencing in our next
version of ACL, ACL6.0. In that version no error will be signalled and
nothing will happen if the parent is not a dialog-mixin.

And if you want to add tab characters into the text control rather
than tabbing to the button, turning off the tabstop property of the
text control would allow that.

Thank You,

Kathy
Kathy Poliakoff, Franz Inc.           1995 University Avenue, Suite 275
<franz.com at kathy> (internet)            Berkeley, CA  94704
Phone: (510) 548-3600; FAX: (510) 548-8253