i just did this a few days back. There are more elegant solutions like using a 
second field to move around, but this works for me. If you change the textSize 
to a non-default value, you might need to adjust some parts of the offset 
calculation at the start.

on mouseDown
   --preparation of data
   put the effective textheight of me into myPosMargin
   put item 2 of the selectedLoc + myPosMargin div 2 into myPos
   put the selectedText of me into myText
   put the hilitedLine of me into myCurrLine
   put the text of me into textToChange
   
   repeat while the mouse is down
      -- for valor! for the engine!
      wait with messages
      if myPos - item 2 of the mouseLoc >= myPosMargin then
         -- moving the mouse upwards
         put max(myCurrLine - 1,1) into myMoveToLine
         if myCurrLine <> myMoveToLine then
         -- need to move to a new position in the list
            put myPos - myPosMargin into myPos
         end if
      else if myPos - item 2 of the mouseLoc <= - myPosMargin then
         -- moving the mouse downwards
         put min(myCurrLine + 1,the number of lines in me) into myMoveToLine
         if myCurrLine <> myMoveToLine then
         -- need to move to a new position in the list
            put myPos + myPosMargin into myPos
         end if
      else
         -- not moving the mouse enough
         put myCurrLine into myMoveToLine
      end if
      
      -- do the moving
      delete line myCurrLine of textToChange
      put myText  & return before line myMoveToLine of textToChange
      if char -2 of textToChange = return then
         delete char -2 of textToChange
      end if
      put textToChange into me
      set the hilitedLine of me to myMoveToLine
      
      -- cleanup
      put myMoveToLine into myCurrLine
   end repeat
   
   -- remove this line if you don't want default field behaviour to happen (in 
other words, don't remove)
   selectionChanged
end mouseDown


On 01.03.2012, at 10:23, Nicolas Cueto wrote:

> Hello,
> 
> I was wondering if anyone had pointers on how to enable a user to
> reposition lines within a listfield. More specifically, a user would
> "press" on a line and drag it within the listfield to a different
> position. To reorder the lines, for example.
> 
> Hoping to not have to reinvent the wheel on this.
> 
> Thank you.
> 
> --
> Nicolas Cueto
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to