Index: ui/views/layout/box_layout.h |
diff --git a/ui/views/layout/box_layout.h b/ui/views/layout/box_layout.h |
index 7670d8cb05e7bd15b59771b2e95c3ade65aabf84..ce2cbd5c9378516259107e156c50fd5c69b19030 100644 |
--- a/ui/views/layout/box_layout.h |
+++ b/ui/views/layout/box_layout.h |
@@ -11,6 +11,7 @@ |
#include "ui/views/layout/layout_manager.h" |
namespace gfx { |
+class Rect; |
class Size; |
} |
@@ -30,6 +31,16 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager { |
kVertical, |
}; |
+ enum BoxPack { |
sky
2014/05/13 16:24:59
These names mean nothing to me. Please add a good
calamity
2014/05/14 02:03:27
BOX_PACK_JUSTIFY would add space between fixed siz
sky
2014/05/14 18:13:40
I see. My concern is that if you set spread_blank_
calamity
2014/05/15 02:51:07
Ah yes. Good point.
|
+ BOX_PACK_START, |
+ BOX_PACK_CENTER, |
+ BOX_PACK_END, |
+ // TODO(calamity): Add BOX_PACK_JUSTIFY which spreads blank space in- |
+ // between the child views. |
+ }; |
+ |
+ // TODO(calamity): Add BoxAlign property to allow cross axis alignment. |
+ |
// Use |inside_border_horizontal_spacing| and |
// |inside_border_vertical_spacing| to add additional space between the child |
// view area and the host view border. |between_child_spacing| controls the |
@@ -44,12 +55,19 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager { |
spread_blank_space_ = spread; |
} |
+ void set_box_pack(BoxPack box_pack) { box_pack_ = box_pack; } |
+ |
// Overridden from views::LayoutManager: |
virtual void Layout(View* host) OVERRIDE; |
virtual gfx::Size GetPreferredSize(View* host) OVERRIDE; |
virtual int GetPreferredHeightForWidth(View* host, int width) OVERRIDE; |
private: |
+ int MainAxisSize(const gfx::Rect& child_area); |
+ int MainAxisPosition(const gfx::Rect& child_area); |
+ void SetMainAxisSize(gfx::Rect* child_area, int size); |
+ void SetMainAxisPosition(gfx::Rect* child_area, int position); |
+ |
// The preferred size for the dialog given the width of the child area. |
gfx::Size GetPreferredSizeForChildWidth(View* host, int child_area_width); |
@@ -66,9 +84,14 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager { |
const int between_child_spacing_; |
// Whether the available extra space should be distributed among the child |
- // views. |
+ // views. This increases the size of child views rather than the space |
+ // between them. |
bool spread_blank_space_; |
+ // The alignment of children in the main axis. This is BOX_PACK_START by |
+ // default. |
+ BoxPack box_pack_; |
+ |
DISALLOW_IMPLICIT_CONSTRUCTORS(BoxLayout); |
}; |