paste into field does not trigger closefield
Ben Rubinstein
benr_mc at cogapp.com
Tue Jun 27 07:17:50 EDT 2006
On 27/6/06 11:37, kee nethery wrote:
> If I type data into a field, when I leave the field it gets a closefield
> message and I have a handler for that.
>
> When I paste text into a field and leave the field without typing
> anything, the field does not get a closefield message and my handler
> never gets called.
>
> Watching the message watcher doesn't present any obvious solution for
> what to use to catch the paste into a text field. Do I have to write a
> handler that traps a set of keystrokes (command V) and then sends the
> field a closefield event?
>
> What does everyone else do?
What I do is whinge for a while, then do something like this:
on keyDown
setCompDirty true
pass keyDown
end keyDown
on returnInField
setCompDirty true
pass returnInField
end returnInField
on deleteKey
setCompDirty true
pass deleteKey
end deleteKey
on backspaceKey
setCompDirty true
pass backspaceKey
end backspaceKey
on cutKey
setCompDirty true
pass cutKey
end cutKey
on pasteKey
setCompDirty true
pass pasteKey
end pasteKey
In this case I've got a form with a number of fields on it, so I'm not so
bothered about when the user leaves the field; "setCompDirty" does things like
enable Save and Revert buttons, and make sure that stuff happens when they
leave the form. But if you really wanted something to happen when the field
is 'exited', with a change, then I'd guess you could trap both exitField and
closeField, with the former checking a flag set in some manner analogous to
the above.
A while ago on the x-talks list I proposed a "fieldChanged" message, to be
sent to a field the first time the text in it changes - whether by typing,
deleting, cut and pasting, drag and dropping, etc - anything except purely
programmatic changes. One idea was that it should be sent on every change,
just saving you from remembering all the possible messages to catch (and I
note that my list above, from an actual app, won't catch drag and drop
changing, oops). Another idea was that it should be sent just once, and then
not again until reset. We discussed 'reset' possibilities including
automatic, once the field loses focus (ie, essentially, when a
closeField/exitField message has been sent); or manual, ie a property of the
field that could be reset to indicate that you want to know the next time it
happens too... unfortunately we got bugged down in these and other discussions
about how exactly this should work, and it never got bugzilla'd it... but
perhaps I'll dig out the details and have another go.
HTH,
Ben Rubinstein | Email: benr_mc at cogapp.com
Cognitive Applications Ltd | Phone: +44 (0)1273-821600
http://www.cogapp.com | Fax : +44 (0)1273-728866
More information about the use-livecode
mailing list