OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/text_button.h" | 5 #include "ui/views/controls/button/text_button.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "grit/ui_resources.h" | 10 #include "grit/ui_resources.h" |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 } | 462 } |
463 | 463 |
464 return flags; | 464 return flags; |
465 } | 465 } |
466 | 466 |
467 void TextButtonBase::GetExtraParams( | 467 void TextButtonBase::GetExtraParams( |
468 ui::NativeTheme::ExtraParams* params) const { | 468 ui::NativeTheme::ExtraParams* params) const { |
469 params->button.checked = false; | 469 params->button.checked = false; |
470 params->button.indeterminate = false; | 470 params->button.indeterminate = false; |
471 params->button.is_default = false; | 471 params->button.is_default = false; |
| 472 params->button.is_focused = false; |
472 params->button.has_border = false; | 473 params->button.has_border = false; |
473 params->button.classic_state = 0; | 474 params->button.classic_state = 0; |
474 params->button.background_color = | 475 params->button.background_color = |
475 ui::NativeTheme::instance()->GetSystemColor( | 476 ui::NativeTheme::instance()->GetSystemColor( |
476 ui::NativeTheme::kColorId_TextButtonBackgroundColor); | 477 ui::NativeTheme::kColorId_TextButtonBackgroundColor); |
477 } | 478 } |
478 | 479 |
479 gfx::Rect TextButtonBase::GetContentBounds(int extra_width) const { | 480 gfx::Rect TextButtonBase::GetContentBounds(int extra_width) const { |
480 gfx::Insets insets = GetInsets(); | 481 gfx::Insets insets = GetInsets(); |
481 int available_width = width() - insets.width(); | 482 int available_width = width() - insets.width(); |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
843 } | 844 } |
844 | 845 |
845 void NativeTextButton::OnPaintFocusBorder(gfx::Canvas* canvas) { | 846 void NativeTextButton::OnPaintFocusBorder(gfx::Canvas* canvas) { |
846 #if defined(OS_WIN) | 847 #if defined(OS_WIN) |
847 if (HasFocus() && (focusable() || IsAccessibilityFocusable())) { | 848 if (HasFocus() && (focusable() || IsAccessibilityFocusable())) { |
848 gfx::Rect rect(GetLocalBounds()); | 849 gfx::Rect rect(GetLocalBounds()); |
849 rect.Inset(kFocusRectInset, kFocusRectInset); | 850 rect.Inset(kFocusRectInset, kFocusRectInset); |
850 canvas->DrawFocusRect(rect); | 851 canvas->DrawFocusRect(rect); |
851 } | 852 } |
852 #else | 853 #else |
853 TextButton::OnPaintFocusBorder(canvas); | 854 // Paint nothing, focus will be indicated with a border highlight drawn by |
| 855 // NativeThemeBase::PaintButton. |
854 #endif | 856 #endif |
855 } | 857 } |
856 | 858 |
857 void NativeTextButton::GetExtraParams( | 859 void NativeTextButton::GetExtraParams( |
858 ui::NativeTheme::ExtraParams* params) const { | 860 ui::NativeTheme::ExtraParams* params) const { |
859 TextButton::GetExtraParams(params); | 861 TextButton::GetExtraParams(params); |
860 params->button.has_border = true; | 862 params->button.has_border = true; |
| 863 #if !defined(OS_WIN) |
| 864 // Windows may paint a dotted focus rect in |
| 865 // NativeTextButton::OnPaintFocusBorder. To avoid getting two focus |
| 866 // indications (A dotted rect and a highlighted border) only set is_focused on |
| 867 // non windows platforms. |
| 868 params->button.is_focused = HasFocus() && |
| 869 (focusable() || IsAccessibilityFocusable()); |
| 870 #endif |
861 } | 871 } |
862 | 872 |
863 } // namespace views | 873 } // namespace views |
OLD | NEW |