On 9/7/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Window placement has caused some discussion recently, so I thought I'd add > my own ponderings to the pot... > > on preOpenStack > set the loc of this stack to alertLoc() > checkWD > end preOpenStack > > > function alertLoc > if "Win32" is in the platform then > if the mode of this stack is in "1,2" then put 30 into n # Toplevel titleBar > height > else put 22 into n # Palette, modeless and modal titlebar height > else > if the mode of this stack is in "1,2" then put 23 into n # Toplevel titleBar > height > else put 16 into n # Palette, modeless and modal titlebar height > end if > if the decorations of this stack ="" then put n-n into n > get the windowBoundingRect > put round( (the width of this stack /2) + ((item 3 of it - item 1 of it) - > the width of this stack) / 2) + item 1 of it into x > put round( (the height of this stack /2) + ((item 4 of it - item 2 of it) - > the height of this stack +n) / 3) + item 2 of it into y > return x,y > end alertLoc > > on checkWD > --| Ensure window is onScreen > set the top of this stack to max(item 2 of the WindowBoundingRect,the top of > this stack) > set the right of this stack to min(item 3 of the WindowBoundingRect,the > right of this stack) > set the left of this stack to max(item 1 of the WindowBoundingRect,the left > of this stack) > set the bottom of this stack to min(item 4 of the WindowBoundingRect,the > bottom of this stack) > end checkWD >
Neat routine Hugh, but I would make one addition. When you are checking to see if the window is on-screen, you use the windowBoundingRect. In a standalone Mac app, the first 2 items of the WBR are 0,0 but this does not allow for the Mac menu bar. So I always check and set item 2 of the WBR to at least 44. Cheers, Sarah _______________________________________________ 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
