[comp.windows.open-look] XmNactivateCallback for TextWidget

nick@esacs.UUCP (Nikolaos Tsivranidis) (03/07/91)

In article <1991Feb22.195012.1357@ritcsh.csh.rit.edu> mikel@ritcsh.csh.rit.edu (Mike Leibow) writes:
>translations and the <Key>:Return don't do it.  Also, if I explicitly
>add <Key>:Return: activate(), that doesn't work either.

 I find the whole situation of "When does the activateCallback get called"
 even more confusing. Hope someone can help!

 Not only does the <Key>:Return: activate() not work, but even if
 it did, so what? Would the user have to hit a Return to activate the
 value and then TAB to get out of the field? Try telling *that* to
 a real user!!! Currently, we use the losingFocusCallback, and basically
 check the value of the field there. I don't like this approach and
 I would rather not do it, but is there a better way?

 Of course I would prefer if Motif would call the activateCallback
 a bit more inteligently! As far as I can tell, there is no info in
 the Motif Style Guide, to answer the following question:

 When does a Text Field validate its input? (Sorry, if the answer is
 when the user hits Return, I think it isn't good enough).

 Here is OpenLook's answer to the same question:
 (OPEN LOOK GUI Application Style Guidelines, pp. 230)
 Dimmed Change Bars
 o When you restrict input to a set of legal values, you need to
   validate the input once users have finished entering it.
 o You can show unvalidated input by displaying a dimmed change
   bar.
 o Display the dimmed change bar as soon as users type a character.
 ...
 ...

 The way I read this, is that text is validated upon exiting, and
 that the first-char-entered puts the field in a "Changed" state,
 which is indicated to the user by a "dimmed change bar". 
 I don't know if the OL toolkits implement it this way, but 
 even if they don't, at least one knows how things are supposed
 to be in the ideal world :-):-)

 Does anybody know what the appropriate behavior is in Motif???

 And now that I am at it, let me ask another question related to
 Text input validation (this time I couldn't find an answer in
 either OL or Motif): 

 Suppose I have a Text field that displays the range of ages,
 something like 1-18, 19-25, 26-50, etc. Suppose that if the
 age is 1-18, I want to display in a radiobox next to the
 text some choices, like BICYCLE, BOOK, TOYS etc (gifts for
 that age group). If the age is 19-25, I may want to display
 CAR, BOOKS, TRIP-TO-FLORIDA etc. 
  In the above case, if the text field displays 1-18,
  and the user starts typing something new, I cannot validate the
  input until the losingFocusCallback. But if she types 19-25, and
  then hits the TOYS choice on the Radio, I have a bad situation
  in my hands: A *single* user action has changed 2 values (the
  text *and* the radio), and moreover these 2 values contradict
  each other. In this case, the losingFocusCallback of the text
  field would change the RadioBox, and the selection of the third
  item would cause my poor 20-year-old to go to Florida :-(:-(
  We don't want a 20-year old in Florida instead of studying,
  do we?

  One way to avoid this situation is to *disable* all related
  choices, once the user starts typing into a text field. 
  We are currently leaning in this direction, but I would like
  to hear first if the StyleGuides have anything to say about
  this. 
  
					- nick -