The previous commit exposed another bug: BWindow::Zoom() incorrectly calculated the max height of the window by only including the border width once. This was previously masked by the fact that the (by default 5) extra pixels were included in its hardcoded default for the height of the tab. Also add the border width to the message returned by GetDecoratorSettings() so Zoom can use the actual value instead of hardcoding it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28679 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
ca9a61313a
commit
6cf3a9ebf7
@ -1533,12 +1533,13 @@ BWindow::Zoom()
|
||||
|
||||
// fallback in case retrieving the decorator settings fails (highly unlikely)
|
||||
float borderWidth = 5.0;
|
||||
float tabHeight = 26.0;
|
||||
float tabHeight = 21.0;
|
||||
BMessage settings;
|
||||
if (GetDecoratorSettings(&settings) == B_OK) {
|
||||
BRect tabRect;
|
||||
if (settings.FindRect("tab frame", &tabRect) == B_OK)
|
||||
tabHeight = tabRect.Height();
|
||||
settings.FindFloat("border width", &borderWidth);
|
||||
}
|
||||
|
||||
// 1) the rectangle defined by SetZoomLimits(),
|
||||
@ -1554,13 +1555,13 @@ BWindow::Zoom()
|
||||
// 3) the screen rectangle
|
||||
BScreen screen(this);
|
||||
float screenWidth = screen.Frame().Width() - 2 * borderWidth;
|
||||
float screenHeight = screen.Frame().Height() - (borderWidth + tabHeight);
|
||||
float screenHeight = screen.Frame().Height() - (2 * borderWidth + tabHeight);
|
||||
if (screenWidth < zoomedWidth)
|
||||
zoomedWidth = screenWidth;
|
||||
if (screenHeight < zoomedHeight)
|
||||
zoomedHeight = screenHeight;
|
||||
|
||||
BPoint zoomedLeftTop = screen.Frame().LeftTop() + BPoint(borderWidth, tabHeight);
|
||||
BPoint zoomedLeftTop = screen.Frame().LeftTop() + BPoint(borderWidth, tabHeight + borderWidth);
|
||||
|
||||
// UN-ZOOM:
|
||||
if (fPreviousFrame.IsValid()
|
||||
|
@ -449,6 +449,9 @@ DefaultDecorator::GetSettings(BMessage* settings) const
|
||||
if (settings->AddRect("tab frame", fTabRect) != B_OK)
|
||||
return false;
|
||||
|
||||
if (settings->AddFloat("border width", fBorderWidth) != B_OK)
|
||||
return false;
|
||||
|
||||
return settings->AddFloat("tab location", (float)fTabOffset) == B_OK;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user