[haiku] Zooming without covering Deskbar

  • From: "Jonas Sundström" <jonas@xxxxxxxxxxx>
  • To: haiku@xxxxxxxxxxxxx
  • Date: Fri, 19 Dec 2008 21:08:15 +0100 CET

"Andrew McCall" <andrew.mccall@xxxxxxxxx> wrote:
> If you are using an applicaiton and maximize it to
> full screen, it covers the deskbar,

In BWindow::Zoom() add something like this: 

(I think after the "// 3) the screen rectangle" code 
section but before the "//UN-ZOOM" code section)

// Adjust for Deskbar position
BDeskbar deskbar;
BRect deskbarRect = deskbar.Frame();
deskbar_location deskbarLocation;
bool isExpanded;
deskbarLocation = deskbar.Location(&isExpanded);
if (deskbarLocation == B_DESKBAR_TOP)
        zoomedLeftTop.y += deskbarRect.Height();

if ((deskbarLocation == B_DESKBAR_LEFT_TOP
         || deskbarLocation == B_DESKBAR_RIGHT_TOP)
                 && isExpanded == false)
        zoomedLeftTop.y += deskbarRect.Height();

if (deskbarLocation == B_DESKBAR_BOTTOM
        || deskbarLocation == B_DESKBAR_LEFT_BOTTOM
        || deskbarLocation == B_DESKBAR_RIGHT_BOTTOM)
        zoomedHeight -= deskbarRect.Height();

and so on ...

(Code untested. I don't have BeOS dev tools set up 
currently, so if anyone feels up to the task... :)

Exactly how to place windows for each Deskbar mode
(e.g. below or beside) might be a matter of personal
preference I suppose. This could be made configurable.


Other related posts:

  • » [haiku] Zooming without covering Deskbar - Jonas Sundström