Constraining the pointer within a rect
Peter T. Evensen
pevensen at siboneylg.com
Thu Aug 17 18:32:26 EDT 2006
Actually, if you put the following in the card or stack and do you're
constraining, it should work:
on mouseLeave
if the target is me then
--- constrain here
end if
end mouseLeave
The issue is, if you put this in the card or stack script, and a control
doesn't trap mouseLeave, the control will pass it's mouseLeave up to the
stack or card.
I did a test with this in the card script with a button on it, and only got
"mouse left" when I moved outside the window, and not when I moved over a
control in the window:
on mouseLeave
if the target is me then put "Mouse Left"
end mouseLeave
on mouseEnter
if the target is me then put "mouse entered"
end mouseEnter
At 05:13 PM 8/17/2006, you wrote:
>Ah, trapping the mouseLeave is much more elegant from a "number-of-
>messages-needed" standpoint. I just tried it. Unfortunately, in my
>situation, because a mouseLeave object only works for the portion
>that is not covered by another object (and it can't be transparent)
>this makes it awkward to use any controls underneath.
>
>On Aug 17, 2006, at 1:20 PM, Peter T. Evensen wrote:
>
>>Perhaps you could just create an object and trap the mouseLeave
>>message and move the pointer in that?
>>
>>At 03:14 PM 8/17/2006, you wrote:
>>>I found that using a "send in time" structure to check the mouseLoc
>>>rather than waiting for the mouseMove message was slightly more
>>>reliable (OSX) and better kept it from going outside the bounding
>>>area.
>>>
>>>on MouseTrap
>>> -- keep the mouse pointer inside the window
>>> if the optionkey is NOT "down" then -- but overide this behavior
>>>with the "optionKey"
>>> put item 1 of globalLoc(the mouseLoc) into x
>>> put item 2 of globalLoc(the mouseLoc) into y
>>> put the top of this stack into tTopEdge
>>> put the bottom of this stack into tBottomEdge
>>> put the right of this stack into tRightEdge
>>> put the left of this stack into tLeftEdge
>>> if x < tLeftEdge then put tLeftEdge +1 into x
>>> if x > tRightEdge then put tRightEdge -1 into x
>>> if y < tTopEdge then put tTopEdge +1 into y
>>> if y > tBottomEdge then put tBottomEdge-1 into y
>>> set the screenmouseloc to x,y
>>> end if
>>> send MouseTrap to me in 40 millisec
>>>end MouseTrap
>>>
>>>
>>>-Scott Morrow
>>>
>>>Elementary Software
>>>(Now with 20% less chalk dust !)
>>>web http://elementarysoftware.com/
>>>email scott at elementarysoftware.com
>>>
>>>-----------------------------------------------------------------
>>>
>>>On Aug 17, 2006, at 8:40 AM, Howard Bornstein wrote:
>>>
>>>>This script seems to work with adequate performance:
>>>>
>>>>on mousemove mh,mv
>>>> if the hilite of btn "constrain" is true then
>>>>
>>>> if mh <= the left of fld "container" then
>>>> set the screenmouseloc to the globalloc of (the left of fld
>>>>"container", mv)
>>>> end if
>>>>
>>>> if mh >= the right of fld "container" then
>>>> set the screenmouseloc to the globalloc of (the right of fld
>>>>"container", mv)
>>>> end if
>>>>
>>>> if mv <= the top of fld "container" then
>>>> set the screenmouseloc to the globalloc of (mh,the top of fld
>>>>"container")
>>>> end if
>>>>
>>>> if mv >= the bottom of fld "container" then
>>>> set the screenmouseloc to the globalloc of (mh,the bottom of
>>>>fld
>>>>"container")
>>>> end if
>>>>
>>>> end if
>>>>end mousemove
>>>>
>>>>
>>>>Note two things:
>>>>
>>>>1) The button "Constrain" needs to be within the field "Container"
>>>>or you'll
>>>>never be able to get out. :-)
>>>>
>>>>2) It is possible to move the mouse out of the rect for brief
>>>>moments, but
>>>>then it pops back into the rectangle. I'm assuming it's a
>>>>function of
>>>>slipping out between a mousemove scan.
>>>>
>>>>
>>>>
>>>>--
>>>>Regards,
>>>>
>>>>Howard Bornstein
>>>>-----------------------
>>>>www.designeq.com
>>>>_______________________________________________
>>>>use-revolution mailing list
>>>>use-revolution at lists.runrev.com
>>>>Please visit this url to subscribe, unsubscribe and manage your
>>>>subscription preferences:
>>>>http://lists.runrev.com/mailman/listinfo/use-revolution
>>>
>>>_______________________________________________
>>>use-revolution mailing list
>>>use-revolution at lists.runrev.com
>>>Please visit this url to subscribe, unsubscribe and manage your
>>>subscription preferences:
>>>http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>>Peter T. Evensen
>>http://www.PetersRoadToHealth.com
>>314-629-5248 or 888-682-4588
>>
>>_______________________________________________
>>use-revolution mailing list
>>use-revolution at lists.runrev.com
>>Please visit this url to subscribe, unsubscribe and manage your
>>subscription preferences:
>>http://lists.runrev.com/mailman/listinfo/use-revolution
>
>_______________________________________________
>use-revolution mailing list
>use-revolution at lists.runrev.com
>Please visit this url to subscribe, unsubscribe and manage your
>subscription preferences:
>http://lists.runrev.com/mailman/listinfo/use-revolution
Peter T. Evensen
http://www.PetersRoadToHealth.com
314-629-5248 or 888-682-4588
More information about the use-livecode
mailing list