On Dec 23, 2010, at 6:34 AM, David Bovill wrote:

This one just caught me out. I have a script that checks a property of it's owner and returns the value. Specifically it checks the owner for a property
of the same name to see when the local value is empty to see if it is
defined higher up in the object hierarchy. I thought this would be a safe
way of implementing object oriented stuff.

But you get recursion when the control is a background, because the owner of a background is the card the background is on, but the card is actually below the background in the message hierarchy, so the background script gets
triggered again when you look for it in the backgrounds owner.

A recursive tongue twister maybe - but just remember a background's owner is
itself in scripting terms!

On the other hand, this utility function works fine for me:

function masterBG theObjectRef
   put the long id of the owner of theObjectRef into onr
   if word 1 of onr = "card" then
      return theObjectRef
   else
      return masterBG(onr)
   end if
end masterBG

It returns the highest level group a control belongs to. I have a stack with two major backgrounds (switch between making one or the other visible with a button). In my custom find function I need to know which master background the foundfield is part of, and it may be nested in lower level groups, so this tells me which bg to show when a string is found, and it works reliably without the recursion problem above.

-- Peter

Peter M. Brigham
pmb...@gmail.com
http://home.comcast.net/~pmbrig



_______________________________________________
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