Chromium Code Reviews| Index: ui/views/layout/box_layout.h |
| diff --git a/ui/views/layout/box_layout.h b/ui/views/layout/box_layout.h |
| index 9a87984d51f77cec0caa488860fa6dc1986f9e28..2705646140c0e4b6dc9d15c2b253291d1ea0697f 100644 |
| --- a/ui/views/layout/box_layout.h |
| +++ b/ui/views/layout/box_layout.h |
| @@ -97,6 +97,14 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager { |
| // Sets the flex for views to use when none is specified. |
| void SetDefaultFlex(int default_flex); |
| + // Clears the margins for the given |view|. |
| + void ClearMarginsForView(const View* view); |
| + |
| + // Sets the margins for a specific |view|. The margins are the area around |
| + // the outside of the given view into which no other view is placed. This is |
| + // in addition to any other horizontal or vertical spacing. |
| + void SetViewMargins(const View* view, const gfx::Insets& margins); |
|
sky
2017/04/25 17:28:58
Is there a reason you aren't using a UI property f
|
| + |
| // Overridden from views::LayoutManager: |
| void Installed(View* host) override; |
| void ViewRemoved(View* host, View* view) override; |
| @@ -105,6 +113,25 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager { |
| int GetPreferredHeightForWidth(const View* host, int width) const override; |
| private: |
| + struct ViewWrapper { |
|
sky
2017/04/25 17:28:59
Please add a description of this.
|
| + ViewWrapper(); |
| + ViewWrapper(const BoxLayout* layout, const View* view); |
| + ViewWrapper(const ViewWrapper& wrapper); |
| + ~ViewWrapper(); |
| + gfx::Size GetPreferredSize() const; |
| + void SetBoundsRect(const gfx::Rect& bounds); |
| + const View* view() const { return view_; } |
| + bool visible() const; |
| + |
| + private: |
| + const View* view_; |
| + const BoxLayout* layout_; |
| + gfx::Insets margins_; |
| + }; |
| + using MarginMap = std::map<const View*, gfx::Insets>; |
| + using FlexMap = std::map<const View*, int>; |
| + friend struct ViewWrappper; |
| + |
| // Returns the flex for the specified |view|. |
| int GetFlexForView(const View* view) const; |
| @@ -139,6 +166,9 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager { |
| // child views. |
| gfx::Size NonChildSize(const View* host) const; |
| + // Returns the margins for the specified |view|. |
| + gfx::Insets GetViewMargins(const View* view) const; |
| + |
| const Orientation orientation_; |
| // Spacing between child views and host view border. |
| @@ -156,7 +186,7 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager { |
| CrossAxisAlignment cross_axis_alignment_; |
| // A map of views to their flex weights. |
| - std::map<const View*, int> flex_map_; |
| + FlexMap flex_map_; |
| // The flex weight for views if none is set. Defaults to 0. |
| int default_flex_; |
| @@ -167,6 +197,9 @@ class VIEWS_EXPORT BoxLayout : public LayoutManager { |
| // The view that this BoxLayout is managing the layout for. |
| views::View* host_; |
| + // Unique margins around specific views. |
| + MarginMap margin_map_; |
| + |
| DISALLOW_IMPLICIT_CONSTRUCTORS(BoxLayout); |
| }; |