problem with drag-dropping a text string (was: Re: use-revolution Digest, Vol 55, Issue 24)

Peter Brigham pmbrig at gmail.com
Tue Apr 15 22:20:23 CDT 2008


On Sun, 13 Apr 2008 17:22:50 +0200, Eric Chatonet  
<eric.chatonet at sosmartsoftware.com> wrote:

> Hi Colin,
>
> Le 13 avr. 08 à 16:01, Colin Holgate a écrit :
>> On Apr 13, 2008, at 4:45 AM, Eric Chatonet wrote:
>>
>>> on dragStart
>>>  set the dragdata["text"] to Transform(the selectedText) --
>>> end dragStart
>>> -----------------------
>>> function Transform pText
>>>  return pText && "modified"
>>> end Transform
>>
>>
>> This too would fail if you include a pass dragStart. I suppose
>> though that you would never pass dragStart normally?
>
> AFAIK this works with or without 'pass dragStart' unless you have
> another dragStart handler in the hierarchy that redefines the dragdata
> ["text"] and put a mess :-)
> But usually you don't need to pass this message.
>
> Best regards from Paris,
> Eric Chatonet.
> ----------------------------------------------------------------
> Plugins and tutorials for Revolution: http://www.sosmartsoftware.com/
> Email: eric.chatonet at sosmartsoftware.com/
> ----------------------------------------------------------------

In my tests, the dragData is empty if you try to get it in a  
dragstart handler. This seems to be confirmed by Mark's response to  
your bug report -- he says "When you receive a dragStart message, the  
'dragData' will be empty - so if
you want to mutate the data from a field (say) then you need to use 'the
selection' to get the currently selected text." Using the  
selectedText (or the selection) is the workaround I'm using:

on dragStart
   put the dragData["text"] into dd
   set the dragData["text"] to the selectedtext && "hello"
end dragStart

-- this works for me. But if I add a "pass dragStart" --

on dragStart
   put the dragData["text"] into dd
   set the dragData["text"] to the selectedtext && "hello"
   pass dragStart
end dragStart

then I get an untransformed drop. So passing the dragstart voids the  
transformation.

Also, the dragAction property when set in the dragstart handler  
doesn't appear to do anything. However, if I set the  
allowabledragactions to either "move" or "copy" in a dragstart  
handler, the appropriate copy or move is done -- *unless* I pass  
dragstart, in which case the current allowabledragactions is ignored  
and I get in all cases a move.

Eric, thanks for posting the bug report. There seem to be a lot of  
aspects to the dragdata and dragging that are either buggy, or don't  
work as I would expect, or are undocumented. I'm posting my  
observations to the QCC.

Peter M. Brigham
pmbrig at gmail.com


More information about the use-livecode mailing list