Okay I found the issue with the standalone not building properly. I wrote a new 
handler to size a window based on the min/max left, top,right,bottoms of every 
visible object, so that the "air" or empty space is consistent for every stack 
opened. It *sorta* works, as long as the topmost and leftmost of the most 
extreme top left objects are where you want them to be. But that is neither 
here nor there. 

To do this more easily, I gather the rects of every object, along with a few 
other properties into an array, then convert the array to a memory database, 
where I can query it for the rect,visible and owner properties, excluding 
simple groups (not datagrids) and the menu group. The result is a text variable 
containing these properties of every object on a card that I queried for, and I 
can sort the lines by item 2,3,4 or 5 of each to get the min left and top, and 
the max right and bottom of all the objects. Good so far? 

All that works a peach in development mode. But in a standalone, something 
fails when the app launches AS A STANDALONE. If I open the mainstack in the 
standalone folder in the IDE, it ALSO runs fine, so it isn't that something is 
going wrong in the build process!!! Just not as a STANDALONE! 

Here is the code. After commenting out all the calls to this handler, the 
standalone works fine again. I am completely befuddled by this. If anyone can 
find fault in this code, which would ONLY cause a problem with a standalone, 
I'd love to hear it: 

on setWindowRect pCardID
   lock screen
   put the short name of pCardID into tCardName
   if not there is a card tCardName then return "ERROR: No Card ID supplied."
   put getParentStack(pCardID) into pStackID
   put the left of pStackID into tOldLeft
   put the top of pStackID into tOldTop
   put tOldLeft into item 1 of tOldTopLeft
   put tOldTop into item 2 of tOldTopLeft
   put the loc of pStackID into tOldLoc
   put "rect,visible,owner" into tPropList
   put getCardObjects(pCardID, tPropList) into aCardObjects
   put aCardObjects ["props"] into aObjectProperties
   put arrayToMemoryDB(aObjectProperties) into tDBID
   put "select * from arraydata where" into tQuery
   put " visible = 'true'" after tQuery
   put " AND (NOT controlname LIKE 'group " & quote & "grp%" & quote & "')" 
after tQuery
   put " AND (NOT controlname LIKE '%MainMenu%')" after tQuery
   put " AND (NOT owner LIKE  '%MainMenu%')" after tQuery
   if the environment is not "Development" then answer "about to query memory 
database."
   
   try
      put revDataFromQuery(comma,cr,tDBID,tQuery) into tQueryResults
   catch theError
      answer theError
   end try
   
   revCloseDatabase tDBID
   if the environment is not "Development" then answer "just queried memory 
database."
   sort tQueryResults numeric by item 2 of each
   put item 2 of line 1 of tQueryResults into minLeft
   sort tQueryResults numeric by item 3 of each
   put item 3 of line 1 of tQueryResults into minTop
   sort tQueryResults numeric descending by item 4 of each
   put item 4 of line 1 of tQueryResults into maxRight
   sort tQueryResults numeric descending by item 5 of each
   put item 5 of line 1 of tQueryResults into maxBottom
   subtract 26 from maxBottom -- Title Bar Height
   -- if the platform contains "MAC" then subtract 21 from maxBottom -- for 
menubar
   -- if the platform contains "WIN" then add 21 to maxBottom
   put minLeft + tOldLeft -30 into item 1 of tNewRect
   put minTop + tOldTop -45 into item 2 of tNewRect
   put maxRight + tOldLeft + minLeft into item 3 of tNewRect
   put maxBottom + tOldTop into item 4 of tNewRect
   set the rect of pStackID to tNewRect
   if the platform contains "WIN" then set the height of pStackID to the height 
of pStackID +21
   set the topLeft of pStackID to tOldTopLeft
   
   put the effective working screenrect into tScreenRect
   put rectWithin(tNewRect, tScreenRect) into tIsWithin
   
   if not tIsWithin then
      set the loc of pStackID to the screenLoc -- center window
   end if
   unlock screen
end setWindowRect


_______________________________________________
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