Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(538)

Unified Diff: ui/views/layout/box_layout.h

Issue 284753002: Add main axis alignment for BoxLayout. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove set_spread_blank_space, rename to MainAxisAlignment Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/bubble/tray_bubble_view.cc ('k') | ui/views/layout/box_layout.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..1982c86fa4d731e39c528d462bb48bebead57754 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,25 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager {
kVertical,
};
+ // This specifies where along the main axis the children should be laid out.
+ // e.g. a horizontal layout of MAIN_AXIS_ALIGNMENT_END will result in the
+ // child views being right-aligned.
+ enum MainAxisAlignment {
+ MAIN_AXIS_ALIGNMENT_START,
+ MAIN_AXIS_ALIGNMENT_CENTER,
+ MAIN_AXIS_ALIGNMENT_END,
+
+ // This distributes extra space among the child views. This increases the
+ // size of child views along the main axis rather than the space between
+ // them.
+ MAIN_AXIS_ALIGNMENT_FILL,
+ // TODO(calamity): Add MAIN_AXIS_ALIGNMENT_JUSTIFY which spreads blank space
+ // in-between the child views.
+ };
+
+ // TODO(calamity): Add CrossAxisAlignment 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
@@ -40,8 +60,8 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager {
int between_child_spacing);
virtual ~BoxLayout();
- void set_spread_blank_space(bool spread) {
- spread_blank_space_ = spread;
+ void set_main_axis_alignment(MainAxisAlignment main_axis_alignment) {
+ main_axis_alignment_ = main_axis_alignment;
}
// Overridden from views::LayoutManager:
@@ -50,6 +70,14 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager {
virtual int GetPreferredHeightForWidth(View* host, int width) OVERRIDE;
private:
+ // Returns the size and position along the main axis of |child_area|.
+ int MainAxisSize(const gfx::Rect& child_area) const;
+ int MainAxisPosition(const gfx::Rect& child_area) const;
+
+ // Sets the size and position along the main axis of |child_area|.
+ void SetMainAxisSize(int size, gfx::Rect* child_area) const;
+ void SetMainAxisPosition(int position, gfx::Rect* child_area) const;
+
// The preferred size for the dialog given the width of the child area.
gfx::Size GetPreferredSizeForChildWidth(View* host, int child_area_width);
@@ -65,9 +93,9 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager {
// Spacing to put in between child views.
const int between_child_spacing_;
- // Whether the available extra space should be distributed among the child
- // views.
- bool spread_blank_space_;
+ // The alignment of children in the main axis. This is
+ // MAIN_AXIS_ALIGNMENT_START by default.
+ MainAxisAlignment main_axis_alignment_;
DISALLOW_IMPLICIT_CONSTRUCTORS(BoxLayout);
};
« no previous file with comments | « ui/views/bubble/tray_bubble_view.cc ('k') | ui/views/layout/box_layout.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698