[comp.windows.x] XRay Text Edit Widget

hyland@kvasir.UUCP (Steve Hyland) (12/01/87)

I know, I know. I should forget V10 and get on with V11.

However, the IR&D project I'm working on uses 10 and I have a problem
with the Text Edit Editor in XRay. I would assume others have had a
similar problem and there is an available fix.

The problem: 

If I provide a default for the editor, it appears in the box - no problem.
If the user backspaces from the end of the string to the beginning, they
can no longer enter text. If they position the cursor at the beginning of
the string and start typing, rather than backspacing to that position, they
can enter text.

Similarly, if there is no default string, indicated by an ascii.nul in the
first position of the buffer, they will be unable to enter text in the field.

Although I'm writing this in Ada, the C programmers we have here are
experiencing a similar problem. Could someone point me to the fix, or
fixes we need to overcome this ?

Thanks in advance,

Steve Hyland
SAIC

fred@hpcvlo.HP.COM (Fred Taft) (12/02/87)

Steve,

I know I answered your question yesterday, when we talked on the phone. 
However, since this appears to be a frequent problem encountered by users
of the TextEdit editor, I felt I should also post the solution:


This situation occurs anytime the user clears all characters from a text edit
field, or anytime the first character is typed into a text edit field.  The
text editor has several 'status' events which it will generate when a field
becomes empty or when the first character is typed into a field; certain
applications are interested in knowing when these situations occur, so we
built them into the text editor.  When one of these status events is
generated, the field editor pushes the event on the input queue, and
returns control to the application; the editor views this as a temporary
break, and expects the application to immediately re-invoke it, once it has
completed processing the 'status' event. (A text editor instance is re-invoked
by sending it a MSG_ACTIVATE).

The problem you are experiencing is that you are probably not checking to see
if you receive one of these status events, and thus, you do not re-invoke the
particular text editor instance.  Refer to the section of the text edit
manual page entitled "RETURNED INFORMATION" for the official description
of how this works.


Fred Taft