mouseEnter-Leave conundrum
J. Landman Gay
jacque at hyperactivesw.com
Mon May 14 15:36:22 EDT 2007
Devin Asay wrote:
> I've run into an interesting problem in a small demo stack I'm working
> on. I am creating an interactive labeled picture in which a label field
> appears when the user mouses over an object in a photograph. I use a
> filled, partially transparent irregular polygon graphic to define the
> outline of the object in the photo I want to label. The label field
> overlaps the graphic object (this detail is important.) I use a script
> like this on the card to control the hiding and showing of the label field:
>
> on mouseEnter
> if the name of the target contains "graphic" then show fld "myLabel"
> end mouseEnter
>
> on mouseLeave
> if the name of the target contains "graphic" then hide fld "myLabel"
> end mouseLeave
>
> Pretty straightforward. Now consider this sequence of events:
>
> mouse enters graphic --> field is shown
> mouse leaves graphic --> field is hidden
>
> No problems. But this is what happens when the mouse enters the graphic,
> then, without leaving the graphic, enters the now visible field:
>
> mouse enters graphic --> field is shown
> mouse enters field --> since mouse is over field, it has left the
> graphic, so
> mouse has left graphic --> field is hidden
> mouse has entered graphic again --> field is shown
> mouse has left graphic --> field is hidden
> mouse has entered graphic again --> field is shown
> ... [ad infinitum]
>
> This resultant "fluttering" of the field only stops after the mouse has
> been moved out of the graphic and enough time has elapsed so that all of
> the queued mouseLeave/mouseEnter events have run through.
>
> go stack url "http://asay.byu.edu/enter-leave.rev" --to see a demonstration
>
> I understand why this happens, and it seems consistent with the engine
> logic, so I'm not inclined to call it a bug. On the other hand, when
> uncontrolled "thrashing" of messages like this happens, it feels like a
> bug.
>
> What do you all think? Should I report it as a bug? Is there an obvious
> workaround that I'm missing? (FlushEvents has no effect on these
> messages.) Insights appreciated.
Try:
on mouseLeave
if the name of the target contains "graphic" then
lock messages
hide fld "myLabel"
end if
end mouseLeave
I'm not sure it's a bug though I agree it probably feels like one.
--
Jacqueline Landman Gay | jacque at hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
More information about the use-livecode
mailing list