smart Window placement - Printable Version +- yab | yet another Basic for HAIKU (https://yab.orgfree.com/forum) +-- Forum: Programming in yab (https://yab.orgfree.com/forum/forumdisplay.php?fid=1) +--- Forum: Snippets (https://yab.orgfree.com/forum/forumdisplay.php?fid=3) +--- Thread: smart Window placement (/showthread.php?tid=1) |
smart Window placement - bbjimmy - 06-05-2015 This is an example of a way to save Window settings yet always display the whole window when the program opens. sub OpenWindow() local x local y x=150 : y=150 if (open(1,"/boot/home/config/settings/myprogram.settings"))then line input #1 x$ line input #1 y$ close #1 x=val(x$) y=val(y$) if x<0 x=150 if y<0 y=150 if (x> peek("desktopwidth")-500) x=150 if y> (peek("desktopheight")-500) y=150 end if window open x,y to x+500,y+500, "MainWindow", "myprogram" // set up the Window end sub sub CloseWindow() x= window get "MainWindow", "Position-X" y= window get "MainWindow", "Position-y" open #1,"/boot/home/config/settings/myprogram.settings","w" print #1 str$(x) print #1 str$(y) close #1 window close "MainWindow" return end sub RE: smart Window placement - clasqm - 08-06-2015 I've been doing much the same thing: if the window is not going to be displayed properly, restore it to a default position, Useful if your user has changed to a lower screen resolution. But an alternative is to take it down in steps. while(x> peek("desktopwidth")-500)) x = x-20 wend 20 pixels is roughly the height of the Haiku window tab, so when you run this routine on y you don't end up with a window that has its tab sticking up above the top of the screen. |