Big change deriving BLayout from BLayoutItem, and allowing viewless BLayouts.

a few highlights:
* BLayout now derives publicly from BLayoutItem
* Added BAbstractLayout class, which our layouts now derive from
* updated layout builders to avoid creating views when they don't need to
* updated layout classes
* updated AboutSystem to fix a little regression
* more details on #6407
* please tell me about any regressions, I've tried to find them all, but some
  may have slipped by.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38207 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Alex Wilson
2010-08-17 18:43:41 +00:00
parent 0f274fd5b2
commit 1d6c7b6cb6
28 changed files with 1546 additions and 312 deletions
+54
View File
@@ -0,0 +1,54 @@
/*
* Copyright 2010, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _ABSTRACT_LAYOUT_H
#define _ABSTRACT_LAYOUT_H
#include <Alignment.h>
#include <Layout.h>
#include <Size.h>
class BAbstractLayout : public BLayout {
public:
BAbstractLayout();
BAbstractLayout(BMessage* from);
virtual ~BAbstractLayout();
virtual BSize MinSize();
virtual BSize MaxSize();
virtual BSize PreferredSize();
virtual BAlignment Alignment();
virtual void SetExplicitMinSize(BSize size);
virtual void SetExplicitMaxSize(BSize size);
virtual void SetExplicitPreferredSize(BSize size);
virtual void SetExplicitAlignment(BAlignment alignment);
virtual BSize BaseMinSize();
virtual BSize BaseMaxSize();
virtual BSize BasePreferredSize();
virtual BAlignment BaseAlignment();
virtual BRect Frame();
virtual void SetFrame(BRect frame);
virtual bool IsVisible();
virtual void SetVisible(bool visible);
virtual status_t Archive(BMessage* into, bool deep = true) const;
virtual status_t AllUnarchived(const BMessage* from);
protected:
virtual void OwnerChanged(BView* was);
virtual void AncestorVisibilityChanged(bool shown);
private:
struct Proxy;
struct ViewProxy;
struct DataProxy;
Proxy* fExplicitData;
};
#endif // _ABSTRACT_LAYOUT_ITEM_H
+8 -8
View File
@@ -5,10 +5,10 @@
#ifndef _CARD_LAYOUT_H
#define _CARD_LAYOUT_H
#include <Layout.h>
#include <AbstractLayout.h>
class BCardLayout : public BLayout {
class BCardLayout : public BAbstractLayout {
public:
BCardLayout();
BCardLayout(BMessage* from);
@@ -19,23 +19,23 @@ public:
void SetVisibleItem(int32 index);
void SetVisibleItem(BLayoutItem* item);
virtual BSize MinSize();
virtual BSize MaxSize();
virtual BSize PreferredSize();
virtual BAlignment Alignment();
virtual BSize BaseMinSize();
virtual BSize BaseMaxSize();
virtual BSize BasePreferredSize();
virtual BAlignment BaseAlignment();
virtual bool HasHeightForWidth();
virtual void GetHeightForWidth(float width, float* min,
float* max, float* preferred);
virtual void InvalidateLayout();
virtual void LayoutView();
virtual void InvalidateLayout(bool children = false);
virtual status_t Archive(BMessage* into, bool deep = true) const;
virtual status_t AllUnarchived(const BMessage* from);
static BArchivable* Instantiate(BMessage* from);
protected:
virtual void DerivedLayoutItems();
virtual bool ItemAdded(BLayoutItem* item, int32 atIndex);
virtual void ItemRemoved(BLayoutItem* item, int32 fromIndex);
+2 -3
View File
@@ -16,9 +16,9 @@ public:
BGridLayoutBuilder(BGridView* view);
BGridLayout* GridLayout() const;
BView* View() const;
BGridLayoutBuilder& GetGridLayout(BGridLayout** _layout);
BGridLayoutBuilder& GetView(BView** _view);
BView* View() const;
BGridLayoutBuilder& GetView(BView** _view);
BGridLayoutBuilder& Add(BView* view, int32 column, int32 row,
int32 columnCount = 1, int32 rowCount = 1);
@@ -32,7 +32,6 @@ public:
float bottom);
operator BGridLayout*();
operator BView*();
private:
BGridLayout* fLayout;
+1 -2
View File
@@ -1,5 +1,5 @@
/*
* Copyright 2006, Haiku, Inc. All rights reserved.
* Copyright 2006-2010, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _GROUP_LAYOUT_BUILDER_H
@@ -39,7 +39,6 @@ public:
float bottom);
operator BGroupLayout*();
operator BView*();
private:
bool _PushLayout(BGroupLayout* layout);
+49 -13
View File
@@ -8,22 +8,27 @@
#include <Alignment.h>
#include <Archivable.h>
#include <LayoutItem.h>
#include <List.h>
#include <Size.h>
class BLayoutContext;
class BLayoutItem;
class BView;
class BLayout : public BArchivable {
class BLayout : public BLayoutItem {
public:
BLayout();
BLayout(BMessage* archive);
virtual ~BLayout();
BView* View() const;
BView* Owner() const;
BView* TargetView() const;
virtual BView* View(); // from BLayoutItem
// methods dealing with items
virtual BLayoutItem* AddView(BView* child);
virtual BLayoutItem* AddView(int32 index, BView* child);
@@ -39,18 +44,22 @@ public:
int32 IndexOfItem(const BLayoutItem* item) const;
int32 IndexOfView(BView* child) const;
virtual BSize MinSize() = 0;
virtual BSize MaxSize() = 0;
virtual BSize PreferredSize() = 0;
virtual BAlignment Alignment() = 0;
bool AncestorsVisible();
virtual bool HasHeightForWidth() = 0;
virtual void GetHeightForWidth(float width, float* min,
float* max, float* preferred) = 0;
// Layouting related methods
virtual void InvalidateLayout();
virtual void InvalidateLayout(bool children = false);
virtual void Relayout(bool immediate = false);
void RequireLayout();
bool IsValid();
void EnableLayoutInvalidation();
void DisableLayoutInvalidation();
virtual void LayoutView() = 0;
void LayoutItems(bool force = false);
BRect LayoutArea();
BLayoutContext* LayoutContext();
// Archiving methods
virtual status_t Archive(BMessage* into, bool deep = true) const;
virtual status_t AllUnarchived(const BMessage* from);
@@ -59,17 +68,44 @@ public:
int32 index) const;
virtual status_t ItemUnarchived(const BMessage* from,
BLayoutItem* item, int32 index);
protected:
// BLayout hook methods
virtual bool ItemAdded(BLayoutItem* item, int32 atIndex);
virtual void ItemRemoved(BLayoutItem* item, int32 fromIndex);
virtual void DerivedLayoutItems() = 0;
virtual void OwnerChanged(BView* was);
// BLayoutItem hook methods
virtual void AttachedToLayout();
virtual void DetachedFromLayout(BLayout* layout);
virtual void AncestorVisibilityChanged(bool shown);
// To be called by sub-classes in SetVisible().
void VisibilityChanged(bool show);
// To be called when layout data is known to be good
void ResetLayoutInvalidation();
private:
friend class BView;
void SetView(BView* view);
bool RemoveViewRecursive(BView* view);
bool InvalidateLayoutsForView(BView* view);
bool InvalidationLegal();
void SetOwner(BView* owner);
void SetTarget(BView* target);
BView* fView;
void _LayoutWithinContext(bool force,
BLayoutContext* context);
uint32 fState;
bool fAncestorsVisible;
int32 fInvalidationDisabled;
BLayoutContext* fContext;
BView* fOwner;
BView* fTarget;
BList fItems;
BList fNestedLayouts;
};
+220 -39
View File
@@ -33,7 +33,6 @@ protected:
public:
inline void SetParent(ParentBuilder* parent);
// conceptually private
inline ParentBuilder& End();
protected:
@@ -71,11 +70,23 @@ public:
inline GroupBuilder AddGroup(enum orientation orientation,
float spacing = 0.0f, float weight = 1.0f);
inline GroupBuilder AddGroup(BGroupView* groupView,
float weight = 1.0f);
inline GroupBuilder AddGroup(BGroupLayout* groupLayout,
float weight = 1.0f);
inline GridBuilder AddGrid(float horizontalSpacing = 0.0f,
float verticalSpacing = 0.0f,
float weight = 1.0f);
inline GridBuilder AddGrid(BGridLayout* gridLayout,
float weight = 1.0f);
inline GridBuilder AddGrid(BGridView* gridView,
float weight = 1.0f);
inline SplitBuilder AddSplit(enum orientation orientation,
float spacing = 0.0f, float weight = 1.0f);
inline SplitBuilder AddSplit(BSplitView* splitView,
float weight = 1.0f);
inline ThisBuilder& AddGlue(float weight = 1.0f);
inline ThisBuilder& AddStrut(float size);
@@ -84,7 +95,6 @@ public:
float bottom);
inline operator BGroupLayout*();
inline operator BView*();
private:
BGroupLayout* fLayout;
@@ -131,13 +141,30 @@ public:
inline GroupBuilder AddGroup(enum orientation orientation,
float spacing, int32 column, int32 row,
int32 columnCount = 1, int32 rowCount = 1);
inline GroupBuilder AddGroup(BGroupView* groupView, int32 column,
int32 row, int32 columnCount = 1,
int32 rowCount = 1);
inline GroupBuilder AddGroup(BGroupLayout* groupLayout,
int32 column, int32 row,
int32 columnCount = 1, int32 rowCount = 1);
inline GridBuilder AddGrid(float horizontalSpacing,
float verticalSpacing, int32 column,
int32 row, int32 columnCount = 1,
int32 rowCount = 1);
inline GridBuilder AddGrid(BGridLayout* gridLayout,
int32 column, int32 row,
int32 columnCount = 1, int32 rowCount = 1);
inline GridBuilder AddGrid(BGridView* gridView,
int32 column, int32 row,
int32 columnCount = 1, int32 rowCount = 1);
inline SplitBuilder AddSplit(enum orientation orientation,
float spacing, int32 column, int32 row,
int32 columnCount = 1, int32 rowCount = 1);
inline SplitBuilder AddSplit(BSplitView* splitView, int32 column,
int32 row, int32 columnCount = 1,
int32 rowCount = 1);
inline ThisBuilder& SetColumnWeight(int32 column, float weight);
inline ThisBuilder& SetRowWeight(int32 row, float weight);
@@ -146,7 +173,6 @@ public:
float bottom);
inline operator BGridLayout*();
inline operator BView*();
private:
BGridLayout* fLayout;
@@ -168,7 +194,8 @@ public:
inline Split(BSplitView* view);
inline BSplitView* View() const;
inline ThisBuilder& GetView(BSplitView** _view);
inline ThisBuilder& GetView(BView** _view);
inline ThisBuilder& GetSplitView(BSplitView** _view);
inline ThisBuilder& Add(BView* view);
inline ThisBuilder& Add(BView* view, float weight);
@@ -177,11 +204,23 @@ public:
inline GroupBuilder AddGroup(enum orientation orientation,
float spacing = 0.0f, float weight = 1.0f);
inline GroupBuilder AddGroup(BGroupView* groupView,
float weight = 1.0f);
inline GroupBuilder AddGroup(BGroupLayout* groupLayout,
float weight = 1.0f);
inline GridBuilder AddGrid(float horizontalSpacing = 0.0f,
float verticalSpacing = 0.0f,
float weight = 1.0f);
inline GridBuilder AddGrid(BGridView* gridView,
float weight = 1.0f);
inline GridBuilder AddGrid(BGridLayout* gridLayout,
float weight = 1.0f);
inline SplitBuilder AddSplit(enum orientation orientation,
float spacing = 0.0f, float weight = 1.0f);
inline SplitBuilder AddSplit(BSplitView* splitView,
float weight = 1.0f);
inline ThisBuilder& SetCollapsible(bool collapsible);
inline ThisBuilder& SetCollapsible(int32 index, bool collapsible);
@@ -244,7 +283,7 @@ Group<ParentBuilder>::Group(BWindow* window, enum orientation orientation,
{
window->SetLayout(fLayout);
fLayout->View()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
fLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
// TODO: we get a white background if we don't do this
}
@@ -277,7 +316,7 @@ template<typename ParentBuilder>
BView*
Group<ParentBuilder>::View() const
{
return fLayout->View();
return fLayout->Owner();
}
@@ -294,7 +333,7 @@ template<typename ParentBuilder>
typename Group<ParentBuilder>::ThisBuilder&
Group<ParentBuilder>::GetView(BView** _view)
{
*_view = fLayout->View();
*_view = fLayout->Owner();
return *this;
}
@@ -340,21 +379,65 @@ typename Group<ParentBuilder>::GroupBuilder
Group<ParentBuilder>::AddGroup(enum orientation orientation, float spacing,
float weight)
{
GroupBuilder builder(orientation, spacing);
GroupBuilder builder(new BGroupLayout(orientation, spacing));
builder.SetParent(this);
fLayout->AddView(builder.View(), weight);
fLayout->AddItem(builder.Layout(), weight);
return builder;
}
template<typename ParentBuilder>
typename Group<ParentBuilder>::GroupBuilder
Group<ParentBuilder>::AddGroup(BGroupView* groupView, float weight)
{
GroupBuilder builder(groupView);
builder.SetParent(this);
fLayout->AddItem(builder.Layout(), weight);
return builder;
}
template<typename ParentBuilder>
typename Group<ParentBuilder>::GroupBuilder
Group<ParentBuilder>::AddGroup(BGroupLayout* groupLayout, float weight)
{
GroupBuilder builder(groupLayout);
builder.SetParent(this);
fLayout->AddItem(builder.Layout(), weight);
return builder;
}
template<typename ParentBuilder>
typename Group<ParentBuilder>::GridBuilder
Group<ParentBuilder>::AddGrid(float horizontalSpacing, float verticalSpacing,
float weight)
Group<ParentBuilder>::AddGrid(float horizontalSpacing,
float verticalSpacing, float weight)
{
GridBuilder builder(horizontalSpacing, verticalSpacing);
GridBuilder builder(new BGridLayout(horizontalSpacing, verticalSpacing));
builder.SetParent(this);
fLayout->AddView(builder.View(), weight);
fLayout->AddItem(builder.Layout(), weight);
return builder;
}
template<typename ParentBuilder>
typename Group<ParentBuilder>::GridBuilder
Group<ParentBuilder>::AddGrid(BGridLayout* gridLayout, float weight)
{
GridBuilder builder(gridLayout);
builder.SetParent(this);
fLayout->AddItem(builder.Layout(), weight);
return builder;
}
template<typename ParentBuilder>
typename Group<ParentBuilder>::GridBuilder
Group<ParentBuilder>::AddGrid(BGridView* gridView, float weight)
{
GridBuilder builder(gridView);
builder.SetParent(this);
fLayout->AddItem(builder.Layout(), weight);
return builder;
}
@@ -371,6 +454,17 @@ Group<ParentBuilder>::AddSplit(enum orientation orientation, float spacing,
}
template<typename ParentBuilder>
typename Group<ParentBuilder>::SplitBuilder
Group<ParentBuilder>::AddSplit(BSplitView* splitView, float weight)
{
SplitBuilder builder(splitView);
builder.SetParent(this);
fLayout->AddView(builder.View(), weight);
return builder;
}
template<typename ParentBuilder>
typename Group<ParentBuilder>::ThisBuilder&
Group<ParentBuilder>::AddGlue(float weight)
@@ -410,13 +504,6 @@ Group<ParentBuilder>::operator BGroupLayout*()
}
template<typename ParentBuilder>
Group<ParentBuilder>::operator BView*()
{
return fLayout->View();
}
// #pragma mark - Grid
@@ -436,7 +523,7 @@ Grid<ParentBuilder>::Grid(BWindow* window, float horizontalSpacing,
{
window->SetLayout(fLayout);
fLayout->View()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
fLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
// TODO: we get a white background if we don't do this
}
@@ -469,7 +556,7 @@ template<typename ParentBuilder>
BView*
Grid<ParentBuilder>::View() const
{
return fLayout->View();
return fLayout->Owner();
}
@@ -486,7 +573,7 @@ template<typename ParentBuilder>
typename Grid<ParentBuilder>::ThisBuilder&
Grid<ParentBuilder>::GetView(BView** _view)
{
*_view = fLayout->View();
*_view = fLayout->Owner();
return *this;
}
@@ -546,9 +633,33 @@ typename Grid<ParentBuilder>::GroupBuilder
Grid<ParentBuilder>::AddGroup(enum orientation orientation, float spacing,
int32 column, int32 row, int32 columnCount, int32 rowCount)
{
GroupBuilder builder(orientation, spacing);
GroupBuilder builder(new BGroupLayout(orientation, spacing));
builder.SetParent(this);
fLayout->AddView(builder.View(), column, row, columnCount, rowCount);
fLayout->AddItem(builder.Layout(), column, row, columnCount, rowCount);
return builder;
}
template<typename ParentBuilder>
typename Grid<ParentBuilder>::GroupBuilder
Grid<ParentBuilder>::AddGroup(BGroupView* groupView, int32 column, int32 row,
int32 columnCount, int32 rowCount)
{
GroupBuilder builder(groupView);
builder.SetParent(this);
fLayout->AddItem(builder.Layout(), column, row, columnCount, rowCount);
return builder;
}
template<typename ParentBuilder>
typename Grid<ParentBuilder>::GroupBuilder
Grid<ParentBuilder>::AddGroup(BGroupLayout* groupLayout, int32 column,
int32 row, int32 columnCount, int32 rowCount)
{
GroupBuilder builder(groupLayout);
builder.SetParent(this);
fLayout->AddItem(builder.Layout(), column, row, columnCount, rowCount);
return builder;
}
@@ -558,7 +669,19 @@ typename Grid<ParentBuilder>::GridBuilder
Grid<ParentBuilder>::AddGrid(float horizontalSpacing, float verticalSpacing,
int32 column, int32 row, int32 columnCount, int32 rowCount)
{
GridBuilder builder(horizontalSpacing, verticalSpacing);
GridBuilder builder(new BGridLayout(horizontalSpacing, verticalSpacing));
builder.SetParent(this);
fLayout->AddItem(builder.Layout(), column, row, columnCount, rowCount);
return builder;
}
template<typename ParentBuilder>
typename Grid<ParentBuilder>::GridBuilder
Grid<ParentBuilder>::AddGrid(BGridView* gridView, int32 column, int32 row,
int32 columnCount, int32 rowCount)
{
GridBuilder builder(gridView);
builder.SetParent(this);
fLayout->AddView(builder.View(), column, row, columnCount, rowCount);
return builder;
@@ -574,7 +697,19 @@ Grid<ParentBuilder>::AddSplit(enum orientation orientation, float spacing,
builder.SetParent(this);
fLayout->AddView(builder.View(), column, row, columnCount, rowCount);
return builder;
}
}
template<typename ParentBuilder>
typename Grid<ParentBuilder>::SplitBuilder
Grid<ParentBuilder>::AddSplit(BSplitView* splitView, int32 column, int32 row,
int32 columnCount, int32 rowCount)
{
SplitBuilder builder(splitView);
builder.SetParent(this);
fLayout->AddView(builder.View(), column, row, columnCount, rowCount);
return builder;
}
template<typename ParentBuilder>
@@ -612,13 +747,6 @@ Grid<ParentBuilder>::operator BGridLayout*()
}
template<typename ParentBuilder>
Grid<ParentBuilder>::operator BView*()
{
return fLayout->View();
}
// #pragma mark - Split
@@ -648,7 +776,16 @@ Split<ParentBuilder>::View() const
template<typename ParentBuilder>
typename Split<ParentBuilder>::ThisBuilder&
Split<ParentBuilder>::GetView(BSplitView** _view)
Split<ParentBuilder>::GetView(BView** _view)
{
*_view = fView;
return *this;
}
template<typename ParentBuilder>
typename Split<ParentBuilder>::ThisBuilder&
Split<ParentBuilder>::GetSplitView(BSplitView** _view)
{
*_view = fView;
return *this;
@@ -696,9 +833,31 @@ typename Split<ParentBuilder>::GroupBuilder
Split<ParentBuilder>::AddGroup(enum orientation orientation, float spacing,
float weight)
{
GroupBuilder builder(orientation, spacing);
GroupBuilder builder(new BGroupLayout(orientation, spacing));
builder.SetParent(this);
fView->AddChild(builder.View(), weight);
fView->AddChild(builder.Layout(), weight);
return builder;
}
template<typename ParentBuilder>
typename Split<ParentBuilder>::GroupBuilder
Split<ParentBuilder>::AddGroup(BGroupView* groupView, float weight)
{
GroupBuilder builder(groupView);
builder.SetParent(this);
fView->AddChild(builder.Layout(), weight);
return builder;
}
template<typename ParentBuilder>
typename Split<ParentBuilder>::GroupBuilder
Split<ParentBuilder>::AddGroup(BGroupLayout* groupLayout, float weight)
{
GroupBuilder builder(groupLayout);
builder.SetParent(this);
fView->AddChild(builder.Layout(), weight);
return builder;
}
@@ -708,9 +867,31 @@ typename Split<ParentBuilder>::GridBuilder
Split<ParentBuilder>::AddGrid(float horizontalSpacing, float verticalSpacing,
float weight)
{
GridBuilder builder(horizontalSpacing, verticalSpacing);
GridBuilder builder(new BGridLayout(horizontalSpacing, verticalSpacing));
builder.SetParent(this);
fView->AddChild(builder.View(), weight);
fView->AddChild(builder.Layout(), weight);
return builder;
}
template<typename ParentBuilder>
typename Split<ParentBuilder>::GridBuilder
Split<ParentBuilder>::AddGrid(BGridView* gridView, float weight)
{
GridBuilder builder(gridView);
builder.SetParent(this);
fView->AddChild(builder.Layout(), weight);
return builder;
}
template<typename ParentBuilder>
typename Split<ParentBuilder>::GridBuilder
Split<ParentBuilder>::AddGrid(BGridLayout* layout, float weight)
{
GridBuilder builder(layout);
builder.SetParent(this);
fView->AddChild(builder.Layout(), weight);
return builder;
}
+13 -4
View File
@@ -16,7 +16,7 @@ class BLayout;
class BView;
class BLayoutItem: public BArchivable {
class BLayoutItem : public BArchivable {
public:
BLayoutItem();
BLayoutItem(BMessage* from);
@@ -46,7 +46,8 @@ public:
virtual BView* View();
virtual void InvalidateLayout();
virtual void InvalidateLayout(bool children = false);
virtual void Relayout(bool immediate = false);
void* LayoutData() const;
void SetLayoutData(void* data);
@@ -57,11 +58,19 @@ public:
virtual status_t AllArchived(BMessage* into) const;
virtual status_t AllUnarchived(const BMessage* from);
private:
friend class BLayout;
protected:
void SetLayout(BLayout* layout);
// hook methods
virtual void AttachedToLayout();
virtual void DetachedFromLayout(BLayout* layout);
virtual void AncestorVisibilityChanged(bool shown);
private:
friend class BLayout;
BLayout* fLayout;
void* fLayoutData;
};
+10 -9
View File
@@ -6,12 +6,12 @@
#define _TWO_DIMENSIONAL_LAYOUT_H
#include <Layout.h>
#include <AbstractLayout.h>
class BLayoutContext;
class BTwoDimensionalLayout : public BLayout {
class BTwoDimensionalLayout : public BAbstractLayout {
public:
BTwoDimensionalLayout();
BTwoDimensionalLayout(BMessage* from);
@@ -25,18 +25,18 @@ public:
void AlignLayoutWith(BTwoDimensionalLayout* other,
enum orientation orientation);
virtual BSize MinSize();
virtual BSize MaxSize();
virtual BSize PreferredSize();
virtual BAlignment Alignment();
virtual BSize BaseMinSize();
virtual BSize BaseMaxSize();
virtual BSize BasePreferredSize();
virtual BAlignment BaseAlignment();
virtual bool HasHeightForWidth();
virtual void GetHeightForWidth(float width, float* min,
float* max, float* preferred);
virtual void InvalidateLayout();
virtual void SetFrame(BRect frame);
virtual void LayoutView();
virtual void InvalidateLayout(bool children = false);
virtual status_t Archive(BMessage* into, bool deep = true) const;
virtual status_t AllArchived(BMessage* into) const;
@@ -56,6 +56,8 @@ protected:
int32 height;
};
virtual void DerivedLayoutItems();
BSize AddInsets(BSize size);
void AddInsets(float* minHeight, float* maxHeight,
float* preferredHeight);
@@ -82,7 +84,6 @@ private:
friend class LocalLayouter;
void _ValidateMinMax();
BLayoutContext* _CurrentLayoutContext();
protected:
float fLeftInset;
+5
View File
@@ -562,6 +562,8 @@ public:
void Layout(bool force);
void Relayout();
class Private;
protected:
virtual void DoLayout();
@@ -580,6 +582,8 @@ protected:
private:
void _Layout(bool force, BLayoutContext* context);
void _LayoutLeft(BLayout* deleted);
void _InvalidateParentLayout();
private:
// FBC padding and forbidden methods
@@ -595,6 +599,7 @@ private:
private:
struct LayoutData;
friend class Private;
friend class BBitmap;
friend class BLayout;
friend class BPrintJob;
+1
View File
@@ -103,6 +103,7 @@ public:
void Close() { Quit(); }
void AddChild(BView* child, BView* before = NULL);
void AddChild(BLayoutItem* child);
bool RemoveChild(BView* child);
int32 CountChildren() const;
BView* ChildAt(int32 index) const;