scope puzzle with menus

J. Landman Gay jacque at hyperactivesw.com
Tue Nov 15 22:40:47 EST 2005


Charles Hartman wrote:
> I've got that incremental-search-in-a-sorted-field routine working  the 
> way I want it (thanks to all the help from this list.) So I  decided to 
> move it to my mainstack's script to avoid having a dozen  copies in the 
> scripts for the scrollable fields themselves. In the  mainstack script 
> there's an incrementalSearch handler with parameters  'theKey' for the 
> keystroke, 'theField' for the name of the field from  which it's being 
> called and whose text is being searched (scrolled,  selected). Each 
> field that wants to use the facility includes a  little keyUp handler to 
> call it. No problem.

Try changing your handler to "keydown" rather than "keyup".

> 
> Also in the mainstack script are the script-local variables for the  
> seconds of the last keystroke and the accumulating string of  
> keystrokes. Perfect use for script-locals (since they're  nonvolatile); 
> it works fine.
> 
> But *other* keystrokes get into the script-local variable too.  
> Specifically, if cmd-U has called up the substack whose field is to  be 
> searched, then the field starts off scrolled to 'U'; a field  called up 
> by cmd-S is scrolled to 'S'. These are keystrokes bound to  menu items.
> 
> So two questions. (1) Why are they getting into the script-local  
> variable?? It's supposed to be accessible only from within the  script. 
> The menus (built with MenuBuilder) are owned by card 1 of the  
> mainstack, but they are not referenced in any way in the mainstack  
> script. Is something behind the scenes violating the script-local  
> definition? (2) What's the best way around it? I could build a kludge  
> filter (maybe, though it would be easier if I knew exactly how those  
> keystrokes got in there), but there must be a better way.
> 
> Any advice & enlightenment much appreciated as always.

You can track what is going on by watching the Message Watcher. When the 
command key is down, you get all the keyboard messages except "keydown". 
So a keydown handler will trap only keys that are depressed alone.

-- 
Jacqueline Landman Gay         |     jacque at hyperactivesw.com
HyperActive Software           |     http://www.hyperactivesw.com



More information about the use-livecode mailing list