diff --git a/headers/os/interface/LayoutItem.h b/headers/os/interface/LayoutItem.h index b0d5302581..851fdd031c 100644 --- a/headers/os/interface/LayoutItem.h +++ b/headers/os/interface/LayoutItem.h @@ -32,6 +32,7 @@ public: virtual void SetExplicitMinSize(BSize size) = 0; virtual void SetExplicitMaxSize(BSize size) = 0; virtual void SetExplicitPreferredSize(BSize size) = 0; + void SetExplicitSize(BSize size); virtual void SetExplicitAlignment(BAlignment alignment) = 0; virtual bool IsVisible() = 0; diff --git a/headers/os/interface/View.h b/headers/os/interface/View.h index 4471ddd1a6..bac388e38f 100644 --- a/headers/os/interface/View.h +++ b/headers/os/interface/View.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009, Haiku, Inc. All rights reserved. + * Copyright 2001-2012, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _VIEW_H @@ -537,6 +537,7 @@ public: void SetExplicitMinSize(BSize size); void SetExplicitMaxSize(BSize size); void SetExplicitPreferredSize(BSize size); + void SetExplicitSize(BSize size); void SetExplicitAlignment(BAlignment alignment); BSize ExplicitMinSize() const; @@ -753,4 +754,5 @@ BView::SetLowColor(uchar r, uchar g, uchar b, uchar a) SetLowColor(color); } + #endif // _VIEW_H diff --git a/src/kits/interface/LayoutItem.cpp b/src/kits/interface/LayoutItem.cpp index 0382c611f9..5ef6cab9c5 100644 --- a/src/kits/interface/LayoutItem.cpp +++ b/src/kits/interface/LayoutItem.cpp @@ -1,9 +1,10 @@ /* - * Copyright 2010, Haiku, Inc. + * Copyright 2010-2012, Haiku, Inc. * Copyright 2006, Ingo Weinhold . * All rights reserved. Distributed under the terms of the MIT License. */ + #include #include @@ -46,6 +47,15 @@ BLayoutItem::Layout() const } +void +BLayoutItem::SetExplicitSize(BSize size) +{ + SetExplicitMinSize(size); + SetExplicitMaxSize(size); + SetExplicitPreferredSize(size); +} + + bool BLayoutItem::HasHeightForWidth() { @@ -122,7 +132,7 @@ BLayoutItem::AlignInFrame(BRect frame) float minHeight; GetHeightForWidth(frame.Width(), &minHeight, NULL, NULL); - + frame.bottom = frame.top + max_c(frame.Height(), minHeight); maxSize.height = minHeight; } @@ -178,7 +188,7 @@ BLayoutItem::SetLayout(BLayout* layout) BView::Private(view).RegisterLayoutItem(this); } } - + if (fLayout) AttachedToLayout(); } diff --git a/src/kits/interface/View.cpp b/src/kits/interface/View.cpp index 47eb59fc73..7adf00e468 100644 --- a/src/kits/interface/View.cpp +++ b/src/kits/interface/View.cpp @@ -4586,6 +4586,16 @@ BView::SetExplicitPreferredSize(BSize size) } +void +BView::SetExplicitSize(BSize size) +{ + fLayoutData->fMinSize = size; + fLayoutData->fMaxSize = size; + fLayoutData->fPreferredSize = size; + InvalidateLayout(); +} + + void BView::SetExplicitAlignment(BAlignment alignment) {