Stack menus

Ken Ray kray at sonsothunder.com
Wed May 29 18:34:36 EDT 2013


> When the mouse rolls over one of the stack  menu options, it's background
> becomes a very dark blue color.  Looking for guidance on how to fix that
> since I've tried the obvious color settings to no avail.  Maybe some other
> property needs (un)setting?

Peter, I think the reason you're seeting the dark blue color is that in the stack that is popping up you have buttons that have the 'autoArm' property set to true, which causes the button to automatically hilite when the mouse passes over it in the popup stack. You can change the color by setting the 'hiliteColor' property of the button(s) that are sitting on the popup stack. Or if you don't want it to hilite at all, you can set the 'armFill' property of the button(s) to false.

> The other issue seems to a difference in how the message path works when I
> click on a button in the stack menu.  I have a mouseUp handler in each
> stack menu button which calls a handler I have at the card level.  In
> debug, I see the mouseUp handler executing but even though it executes the
> call to the card hanlder, the card level handler never executes.
> 
> I've worked round it by putting the mouseUp handler at the card level,
> arguably a better solution anyway but curious about this behavior.

OK, any script that you call from popup stack objects follow the hierarchy (AFAIK) of the menu button - that is suppose the main stack was called "Stack 1" and the popup stack was called "Stack 2":

   menu button (of Stack 2)
   card script (of Stack 2)
   stack script (of Stack 2)
   stack script (of Stack 1 - if Stack 2 is a substack of Stack 1)
   libraries/backscripts/etc.

Note that it never triggers the card script of Stack 1. Your 'mouseUp' handler is actually trapping the mouseUp of the button that *invoked* the popup stack… not the mouseUp on the menu button you ultimately selected.

So to get around this you'll need to use 'dispatch' or the equivalent from the script of the menu button in Stack 2 to the card in Stack 1, like:

(script of menu button of Stack 2:)
on menuPick pItemName
  dispatch "ItemSelected" to cd 1 of stack "Stack 1" with pItemName
end menuPick


Hope this helps,

Ken Ray
Sons of Thunder Software, Inc.
Email: kray at sonsothunder.com
Web Site: http://www.sonsothunder.com/	




More information about the use-livecode mailing list