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

Side by Side Diff: ui/views/controls/button/md_text_button.cc

Issue 2758323002: Broke out layout metric information from ViewsDelegate to LayoutProvider (Closed)
Patch Set: Final feedback addressed Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « ui/views/controls/button/label_button.cc ('k') | ui/views/examples/dialog_example.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/controls/button/md_text_button.h" 5 #include "ui/views/controls/button/md_text_button.h"
6 6
7 #include "base/i18n/case_conversion.h" 7 #include "base/i18n/case_conversion.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "ui/base/material_design/material_design_controller.h" 9 #include "ui/base/material_design/material_design_controller.h"
10 #include "ui/gfx/canvas.h" 10 #include "ui/gfx/canvas.h"
11 #include "ui/gfx/color_palette.h" 11 #include "ui/gfx/color_palette.h"
12 #include "ui/gfx/color_utils.h" 12 #include "ui/gfx/color_utils.h"
13 #include "ui/native_theme/native_theme.h" 13 #include "ui/native_theme/native_theme.h"
14 #include "ui/views/animation/flood_fill_ink_drop_ripple.h" 14 #include "ui/views/animation/flood_fill_ink_drop_ripple.h"
15 #include "ui/views/animation/ink_drop_highlight.h" 15 #include "ui/views/animation/ink_drop_highlight.h"
16 #include "ui/views/animation/ink_drop_impl.h" 16 #include "ui/views/animation/ink_drop_impl.h"
17 #include "ui/views/animation/ink_drop_painted_layer_delegates.h" 17 #include "ui/views/animation/ink_drop_painted_layer_delegates.h"
18 #include "ui/views/background.h" 18 #include "ui/views/background.h"
19 #include "ui/views/border.h" 19 #include "ui/views/border.h"
20 #include "ui/views/controls/button/blue_button.h" 20 #include "ui/views/controls/button/blue_button.h"
21 #include "ui/views/controls/focus_ring.h" 21 #include "ui/views/controls/focus_ring.h"
22 #include "ui/views/layout/layout_provider.h"
22 #include "ui/views/painter.h" 23 #include "ui/views/painter.h"
23 #include "ui/views/style/platform_style.h" 24 #include "ui/views/style/platform_style.h"
24 #include "ui/views/views_delegate.h"
25 25
26 namespace views { 26 namespace views {
27 27
28 namespace { 28 namespace {
29 29
30 LabelButton* CreateButton(ButtonListener* listener, 30 LabelButton* CreateButton(ButtonListener* listener,
31 const base::string16& text, 31 const base::string16& text,
32 bool md) { 32 bool md) {
33 if (md) 33 if (md)
34 return MdTextButton::Create(listener, text); 34 return MdTextButton::Create(listener, text);
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 } 186 }
187 187
188 MdTextButton::MdTextButton(ButtonListener* listener) 188 MdTextButton::MdTextButton(ButtonListener* listener)
189 : LabelButton(listener, base::string16()), 189 : LabelButton(listener, base::string16()),
190 is_prominent_(false) { 190 is_prominent_(false) {
191 SetInkDropMode(PlatformStyle::kUseRipples ? InkDropMode::ON 191 SetInkDropMode(PlatformStyle::kUseRipples ? InkDropMode::ON
192 : InkDropMode::OFF); 192 : InkDropMode::OFF);
193 set_has_ink_drop_action_on_click(true); 193 set_has_ink_drop_action_on_click(true);
194 SetHorizontalAlignment(gfx::ALIGN_CENTER); 194 SetHorizontalAlignment(gfx::ALIGN_CENTER);
195 SetFocusForPlatform(); 195 SetFocusForPlatform();
196 const int minimum_width = ViewsDelegate::GetInstance()->GetDistanceMetric( 196 const int minimum_width = LayoutProvider::Get()->GetDistanceMetric(
197 DistanceMetric::DIALOG_BUTTON_MINIMUM_WIDTH); 197 DISTANCE_DIALOG_BUTTON_MINIMUM_WIDTH);
198 SetMinSize(gfx::Size(minimum_width, 0)); 198 SetMinSize(gfx::Size(minimum_width, 0));
199 SetFocusPainter(nullptr); 199 SetFocusPainter(nullptr);
200 label()->SetAutoColorReadabilityEnabled(false); 200 label()->SetAutoColorReadabilityEnabled(false);
201 set_request_focus_on_press(false); 201 set_request_focus_on_press(false);
202 LabelButton::SetFontList(GetMdFontList()); 202 LabelButton::SetFontList(GetMdFontList());
203 203
204 set_animate_on_state_change(true); 204 set_animate_on_state_change(true);
205 205
206 // Paint to a layer so that the canvas is snapped to pixel boundaries (useful 206 // Paint to a layer so that the canvas is snapped to pixel boundaries (useful
207 // for fractional DSF). 207 // for fractional DSF).
(...skipping 25 matching lines...) Expand all
233 int target_height = std::max(kBaseHeight + size_delta * 2, 233 int target_height = std::max(kBaseHeight + size_delta * 2,
234 label()->font_list().GetFontSize() * 2); 234 label()->font_list().GetFontSize() * 2);
235 235
236 int label_height = label()->GetPreferredSize().height(); 236 int label_height = label()->GetPreferredSize().height();
237 int top_padding = (target_height - label_height) / 2; 237 int top_padding = (target_height - label_height) / 2;
238 int bottom_padding = (target_height - label_height + 1) / 2; 238 int bottom_padding = (target_height - label_height + 1) / 2;
239 DCHECK_EQ(target_height, label_height + top_padding + bottom_padding); 239 DCHECK_EQ(target_height, label_height + top_padding + bottom_padding);
240 240
241 // TODO(estade): can we get rid of the platform style border hoopla if 241 // TODO(estade): can we get rid of the platform style border hoopla if
242 // we apply the MD treatment to all buttons, even GTK buttons? 242 // we apply the MD treatment to all buttons, even GTK buttons?
243 const int horizontal_padding = 243 const int horizontal_padding = LayoutProvider::Get()->GetDistanceMetric(
244 ViewsDelegate::GetInstance()->GetDistanceMetric( 244 DISTANCE_BUTTON_HORIZONTAL_PADDING);
245 DistanceMetric::BUTTON_HORIZONTAL_PADDING);
246 SetBorder(CreateEmptyBorder(top_padding, horizontal_padding, bottom_padding, 245 SetBorder(CreateEmptyBorder(top_padding, horizontal_padding, bottom_padding,
247 horizontal_padding)); 246 horizontal_padding));
248 } 247 }
249 248
250 void MdTextButton::UpdateColors() { 249 void MdTextButton::UpdateColors() {
251 ui::NativeTheme::ColorId fg_color_id = 250 ui::NativeTheme::ColorId fg_color_id =
252 is_prominent_ ? ui::NativeTheme::kColorId_TextOnProminentButtonColor 251 is_prominent_ ? ui::NativeTheme::kColorId_TextOnProminentButtonColor
253 : ui::NativeTheme::kColorId_ButtonEnabledColor; 252 : ui::NativeTheme::kColorId_ButtonEnabledColor;
254 253
255 ui::NativeTheme* theme = GetNativeTheme(); 254 ui::NativeTheme* theme = GetNativeTheme();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 stroke_color, gfx::kDisabledControlAlpha); 298 stroke_color, gfx::kDisabledControlAlpha);
300 } 299 }
301 300
302 DCHECK_EQ(SK_AlphaOPAQUE, static_cast<int>(SkColorGetA(bg_color))); 301 DCHECK_EQ(SK_AlphaOPAQUE, static_cast<int>(SkColorGetA(bg_color)));
303 set_background(Background::CreateBackgroundPainter( 302 set_background(Background::CreateBackgroundPainter(
304 Painter::CreateRoundRectWith1PxBorderPainter(bg_color, stroke_color, 303 Painter::CreateRoundRectWith1PxBorderPainter(bg_color, stroke_color,
305 kInkDropSmallCornerRadius))); 304 kInkDropSmallCornerRadius)));
306 } 305 }
307 306
308 } // namespace views 307 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/button/label_button.cc ('k') | ui/views/examples/dialog_example.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698