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

Unified Diff: chrome/browser/ui/infobar_container_delegate.cc

Issue 2464063002: Revert of Some more pre-material cleanups (Closed)
Patch Set: 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 | « chrome/browser/ui/infobar_container_delegate.h ('k') | chrome/browser/ui/layout_constants.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/infobar_container_delegate.cc
diff --git a/chrome/browser/ui/infobar_container_delegate.cc b/chrome/browser/ui/infobar_container_delegate.cc
index 235ae5360a9e61324a0b6e6b9f06e321020e90c9..866557653ae8fe86f104719bb837d42246dc7d7f 100644
--- a/chrome/browser/ui/infobar_container_delegate.cc
+++ b/chrome/browser/ui/infobar_container_delegate.cc
@@ -5,29 +5,58 @@
#include "chrome/browser/ui/infobar_container_delegate.h"
#include "build/build_config.h"
+#include "ui/base/material_design/material_design_controller.h"
#include "ui/gfx/animation/slide_animation.h"
#if defined(TOOLKIT_VIEWS)
#include "ui/views/window/non_client_view.h"
#endif
+namespace {
+
+int GetDefaultArrowTargetHeight() {
+ return ui::MaterialDesignController::IsModeMaterial()
+ ? InfoBarContainerDelegate::kDefaultArrowTargetHeightMd
+ : InfoBarContainerDelegate::kDefaultArrowTargetHeight;
+}
+
+int GetDefaultArrowTargetHalfWidth() {
+ return ui::MaterialDesignController::IsModeMaterial()
+ ? InfoBarContainerDelegate::kDefaultArrowTargetHalfWidthMd
+ : InfoBarContainerDelegate::kDefaultArrowTargetHalfWidth;
+}
+
+int GetSeparatorLineHeightForLayout() {
+ return ui::MaterialDesignController::IsModeMaterial()
+ ? 0
+ : InfoBarContainerDelegate::kSeparatorLineHeight;
+}
+
+} // namespace
+
// static
#if defined(OS_MACOSX)
const int InfoBarContainerDelegate::kSeparatorLineHeight = 1;
-#else
+const int InfoBarContainerDelegate::kDefaultArrowTargetHeight = 11;
+#elif defined(TOOLKIT_VIEWS)
+// Views comes second until the Mac browser is Views-based.
const int InfoBarContainerDelegate::kSeparatorLineHeight =
views::NonClientFrameView::kClientEdgeThickness;
+const int InfoBarContainerDelegate::kDefaultArrowTargetHeight = 9;
#endif
-const int InfoBarContainerDelegate::kDefaultArrowTargetHeight = 11;
+const int InfoBarContainerDelegate::kDefaultArrowTargetHeightMd = 11;
-const int InfoBarContainerDelegate::kDefaultBarTargetHeight = 40;
+const int InfoBarContainerDelegate::kDefaultBarTargetHeight = 36;
+const int InfoBarContainerDelegate::kDefaultBarTargetHeightMd = 40;
const int InfoBarContainerDelegate::kMaximumArrowTargetHeight = 24;
const int InfoBarContainerDelegate::kDefaultArrowTargetHalfWidth =
kDefaultArrowTargetHeight;
+const int InfoBarContainerDelegate::kDefaultArrowTargetHalfWidthMd =
+ kDefaultArrowTargetHeightMd;
const int InfoBarContainerDelegate::kMaximumArrowTargetHalfWidth = 14;
InfoBarContainerDelegate::InfoBarContainerDelegate()
- : top_arrow_target_height_(kDefaultArrowTargetHeight) {}
+ : top_arrow_target_height_(GetDefaultArrowTargetHeight()) {}
InfoBarContainerDelegate::~InfoBarContainerDelegate() {
}
@@ -36,7 +65,8 @@
int height,
infobars::InfoBarContainer* container) {
top_arrow_target_height_ =
- std::min(std::max(height, 0), kMaximumArrowTargetHeight);
+ std::min(std::max(height - GetSeparatorLineHeightForLayout(), 0),
+ kMaximumArrowTargetHeight);
container->UpdateInfoBarArrowTargetHeights();
}
@@ -48,13 +78,13 @@
if (index == 0)
return top_arrow_target_height_;
if ((index > 1) || animation.IsShowing())
- return kDefaultArrowTargetHeight;
+ return GetDefaultArrowTargetHeight();
// When the first infobar is animating closed, we animate the second infobar's
// arrow target height from the default to the top target height. Note that
// the animation values here are going from 1.0 -> 0.0 as the top bar closes.
return top_arrow_target_height_ +
static_cast<int>(
- (kDefaultArrowTargetHeight - top_arrow_target_height_) *
+ (GetDefaultArrowTargetHeight() - top_arrow_target_height_) *
animation.GetCurrentValue());
}
@@ -81,12 +111,22 @@
// half-width to be proportionally the same distance between its default and
// maximum values as the height is between its.
*arrow_half_width =
- kDefaultArrowTargetHalfWidth +
- ((kMaximumArrowTargetHalfWidth - kDefaultArrowTargetHalfWidth) *
+ GetDefaultArrowTargetHalfWidth() +
+ ((kMaximumArrowTargetHalfWidth - GetDefaultArrowTargetHalfWidth()) *
((*arrow_height - kDefaultArrowTargetHeight) /
(kMaximumArrowTargetHeight - kDefaultArrowTargetHeight)));
}
- int target_height =
- bar_target_height == -1 ? kDefaultBarTargetHeight : bar_target_height;
+ // Add pixels for the stroke, if the arrow is to be visible at all. Without
+ // this, changing the arrow height from 0 to kSeparatorLineHeight would
+ // produce no visible effect, because the stroke would paint atop the divider
+ // line above the infobar.
+ if (*arrow_height && !ui::MaterialDesignController::IsModeMaterial())
+ *arrow_height += GetSeparatorLineHeightForLayout();
+
+ int target_height = bar_target_height != -1
+ ? bar_target_height
+ : ui::MaterialDesignController::IsModeMaterial()
+ ? kDefaultBarTargetHeightMd
+ : kDefaultBarTargetHeight;
*bar_height = animation.CurrentValueBetween(0, target_height);
}
« no previous file with comments | « chrome/browser/ui/infobar_container_delegate.h ('k') | chrome/browser/ui/layout_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698