Here's a mystery -- to me, at any rate.

In one of my stacks I have a button that changes its function when clicked with the optionkey down. To alert the user, I have mouseEnter, mouseLeave, and mouseMove handlers in the button script that change the label of the button accordingly. At some point I noticed that the button label stayed changed after option-clicking it -- the first thing that happens is an answer dialog, so the user moves the cursor off the button to deal with that, leaving the button label in changed mode. I could have made sure to change it back in the button script, but instead I put a mousemove handler in the stack script, so that the button would revert to the primary label whenever the mouse was outside the button.

But then whenever I moved the cursor into the button with the optionkey down I'd get a rapid flicker between the two labels. I couldn't for the life of me figure out what was going on, as I do *not* have a pass mousemove command in the button script. BUT -- when I either comment out the stack mousemove script or put an empty blocking mousemove handler in the card script, the flickering stops. It looks as if the mousemove message is getting passed along the message hierarchy despite the lack of a "pass" command. How can this be?

I don't have duplicate mousemove handlers in button and stack scripts -- I checked. I have no relevant frontscripts and I'm using no extra stacks/libraries. The button is part of a group with backgroundbehavior set to true (so new cards inherit all controls), but there's nothing in the group script. It's a simple set-up in terms of the message path -- or it should be: button -> card -> group -> stack, except the button handler should block everything higher -- and indeed, I can block it with an empty mousemove handler at the card level. I looked at the message watcher with mousemove messages unsuppressed, and every time I moved the mouse one pixel inside the button rect with the optionkey down the label changes briefly to the base state then back to the altered state, and I got *two* mousemove messages: one "mousemove" and one "mouseMove" -- note the capital M. I guess I don't understand this either. Why two? Does this confirm the unwarranted passing of the message?

I just tried creating a new empty stack with one button and mousemove handlers in the button and the stack scripts similar to those described above, but it doesn't flicker in that simple test stack. I don't know why it would do so in mine.

I can fix this easily in several ways, but I don't understand what is doing on.

Using Studio 2.8.1 build 471 on a Mac iBook G4 with OSX 10.4

-- Peter

Peter M. Brigham
[EMAIL PROTECTED]
http://home.comcast.net/~pmbrig/

-- PROGRAM, n. A spell cast over a computer allowing
    it to turn one's input into error messages.
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to