On Nov 8, 2005, at 12:08 AM, Scott Rossi wrote:
With some text selected in a field in a top stack, is it possible to
maintain focus on/selection of the text when clicking in a palette that contains a text field? I'm running into the problem of focus shifting from
the text field in top stack to the text field in the palette.

Right now you have to script around it. It seems there should be a property of a stack that would return the name of the field that has focus for that stack.

Here is some code I use in a library stack for tracking the last active field of a stack. I like to mark the field with a light grey background when it is suspended and restore the background to empty when the stack resumes. This code also creates two getProps that return the selectedChunk and selectedField for a stack. In order for the library to track fields in a stack you must set the uWindow ["Name"] prop of the stack to some value. Maybe this will help.


--
Trevor DeVore
Blue Mango Multimedia
[EMAIL PROTECTED]



local sWindowsA

/**
* When a stack is suspended we save the active field (if any) and hilite the
* text with a light grey.
*/
on suspendStack
        local tWindowName
        
        if the uWindow["Name"] of the owner of the target is not empty then
                put the uWindow["Name"] of this stack into tWindowName
if selectedField() is not empty AND exists(long id of the owner of selectedField()) then
                        put long id of the owner of selectedField() into tObj
                        repeat while word 1 of tObj <> "stack"
                                put the owner of tObj into tObj
                        end repeat
                        
if the short name of tObj is the short name of the owner of the target then
                                put selectedChunk() into 
sWindowsA[tWindowName,"activechunk"]
                                
                                if not the listBehavior of selectedField() then
                                        set the backgroundColor of selectedChunk() to 
"200,200,200"
                                        select empty
                                end if
                        end if
                else
                        put empty into sWindowsA[tWindowName,"activechunk"]
                end if
        end if
        
        pass suspendStack
end suspendStack


on resumeStack
        local tWindowName
        
        if the uWindow["Name"] of the owner of the target is not empty then
                put the uWindow["Name"] of this stack into tWindowName
                
                if sWindowsA[tWindowName,"activechunk"]       is not empty then
set the backgroundColor of sWindowsA[tWindowName,"activechunk"] to empty
                        select sWindowsA[tWindowName,"activechunk"]
                end if
        end if

        pass resumeStack
end resumeStack


/**
* Returns the short name of the last active field of a stack.
*
*/
getProp uStackFocusedField
        local tWindowName
        
if selectedField() is not empty AND exists(long id of the owner of selectedField()) then
                put long id of the owner of selectedField() into tObj
                repeat while word 1 of tObj <> "stack"
                        put the owner of tObj into tObj
                end repeat
                
                if the short name of tObj is the short name of the target then
                        return short name of selectedField()
                end if
        end if
        
        if the uWindow["Name"] of the target is not empty then
                put the uWindow["Name"] of the target into tWindowName
                if sWindowsA[tWindowName,"activechunk"] is not empty then
                        get word -2 to -1 of 
sWindowsA[tWindowName,"activechunk"]
                        return short name of it
                end if
        end if
        
        return empty
end uStackFocusedField


/**
* Returns the active chunk of a stack as returned by selectedChunk().
*
*/
getProp uStackFocusedChunk
        local tWindowName
        
if selectedField() is not empty AND exists(long id of the owner of selectedField()) then
                put long id of the owner of selectedField() into tObj
                repeat while word 1 of tObj <> "stack"
                        put the owner of tObj into tObj
                end repeat
                
                if the short name of tObj is the short name of the target then
                        return selectedChunk()
                end if
        end if
        
        if the uWindow["Name"] of the target is not empty then
                put the uWindow["Name"] of the target into tWindowName
                if sWindowsA[tWindowName,"activechunk"] is not empty then
                        return sWindowsA[tWindowName,"activechunk"]
                end if
        end if
        
        return empty
end uStackFocusedChunk


_______________________________________________
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