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

Unified Diff: ui/views/border.cc

Issue 2475033003: Add ability to specify extra insets for a view via its border. (Closed)
Patch Set: restore lost changes Created 4 years, 1 month 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/border.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/border.cc
diff --git a/ui/views/border.cc b/ui/views/border.cc
index 153411dc40d61413a70935104fa6856944d2b44a..bac093ec914e348a36dd0adc5997cefba88b76f8 100644
--- a/ui/views/border.cc
+++ b/ui/views/border.cc
@@ -137,6 +137,40 @@ gfx::Size EmptyBorder::GetMinimumSize() const {
return gfx::Size();
}
+class ExtraInsetsBorder : public Border {
+ public:
+ ExtraInsetsBorder(std::unique_ptr<Border> border, const gfx::Insets& insets);
+
+ // Overridden from Border:
+ void Paint(const View& view, gfx::Canvas* canvas) override;
+ gfx::Insets GetInsets() const override;
+ gfx::Size GetMinimumSize() const override;
+
+ private:
+ std::unique_ptr<Border> border_;
+ const gfx::Insets extra_insets_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtraInsetsBorder);
+};
+
+ExtraInsetsBorder::ExtraInsetsBorder(std::unique_ptr<Border> border,
+ const gfx::Insets& insets)
+ : border_(std::move(border)), extra_insets_(insets) {}
+
+void ExtraInsetsBorder::Paint(const View& view, gfx::Canvas* canvas) {
+ border_->Paint(view, canvas);
+}
+
+gfx::Insets ExtraInsetsBorder::GetInsets() const {
+ return border_->GetInsets() + extra_insets_;
+}
+
+gfx::Size ExtraInsetsBorder::GetMinimumSize() const {
+ gfx::Size size = border_->GetMinimumSize();
+ size.Enlarge(extra_insets_.width(), extra_insets_.height());
+ return size;
+}
+
class BorderPainter : public Border {
public:
BorderPainter(std::unique_ptr<Painter> painter, const gfx::Insets& insets);
@@ -221,6 +255,13 @@ std::unique_ptr<Border> Border::CreateSolidSidedBorder(int top,
}
// static
+std::unique_ptr<Border> Border::CreatePaddedBorder(
+ std::unique_ptr<Border> border,
+ const gfx::Insets& insets) {
+ return base::MakeUnique<ExtraInsetsBorder>(std::move(border), insets);
+}
+
+// static
std::unique_ptr<Border> Border::CreateBorderPainter(
std::unique_ptr<Painter> painter,
const gfx::Insets& insets) {
« no previous file with comments | « ui/views/border.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698