| 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/combobox/combobox.h" | 5 #include "ui/views/controls/combobox/combobox.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 #include "ui/native_theme/common_theme.h" | 27 #include "ui/native_theme/common_theme.h" |
| 28 #include "ui/native_theme/native_theme.h" | 28 #include "ui/native_theme/native_theme.h" |
| 29 #include "ui/native_theme/native_theme_aura.h" | 29 #include "ui/native_theme/native_theme_aura.h" |
| 30 #include "ui/resources/grit/ui_resources.h" | 30 #include "ui/resources/grit/ui_resources.h" |
| 31 #include "ui/views/animation/flood_fill_ink_drop_ripple.h" | 31 #include "ui/views/animation/flood_fill_ink_drop_ripple.h" |
| 32 #include "ui/views/animation/ink_drop_highlight.h" | 32 #include "ui/views/animation/ink_drop_highlight.h" |
| 33 #include "ui/views/background.h" | 33 #include "ui/views/background.h" |
| 34 #include "ui/views/controls/button/custom_button.h" | 34 #include "ui/views/controls/button/custom_button.h" |
| 35 #include "ui/views/controls/button/label_button.h" | 35 #include "ui/views/controls/button/label_button.h" |
| 36 #include "ui/views/controls/combobox/combobox_listener.h" | 36 #include "ui/views/controls/combobox/combobox_listener.h" |
| 37 #include "ui/views/controls/focus_ring.h" |
| 37 #include "ui/views/controls/focusable_border.h" | 38 #include "ui/views/controls/focusable_border.h" |
| 38 #include "ui/views/controls/menu/menu_config.h" | 39 #include "ui/views/controls/menu/menu_config.h" |
| 39 #include "ui/views/controls/menu/menu_model_adapter.h" | 40 #include "ui/views/controls/menu/menu_model_adapter.h" |
| 40 #include "ui/views/controls/menu/menu_runner.h" | 41 #include "ui/views/controls/menu/menu_runner.h" |
| 41 #include "ui/views/controls/prefix_selector.h" | 42 #include "ui/views/controls/prefix_selector.h" |
| 42 #include "ui/views/controls/textfield/textfield.h" | 43 #include "ui/views/controls/textfield/textfield.h" |
| 43 #include "ui/views/mouse_constants.h" | 44 #include "ui/views/mouse_constants.h" |
| 44 #include "ui/views/painter.h" | 45 #include "ui/views/painter.h" |
| 45 #include "ui/views/resources/grit/views_resources.h" | 46 #include "ui/views/resources/grit/views_resources.h" |
| 46 #include "ui/views/style/platform_style.h" | 47 #include "ui/views/style/platform_style.h" |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 | 386 |
| 386 DISALLOW_COPY_AND_ASSIGN(ComboboxMenuModel); | 387 DISALLOW_COPY_AND_ASSIGN(ComboboxMenuModel); |
| 387 }; | 388 }; |
| 388 | 389 |
| 389 //////////////////////////////////////////////////////////////////////////////// | 390 //////////////////////////////////////////////////////////////////////////////// |
| 390 // Combobox, public: | 391 // Combobox, public: |
| 391 | 392 |
| 392 Combobox::Combobox(ui::ComboboxModel* model, Style style) | 393 Combobox::Combobox(ui::ComboboxModel* model, Style style) |
| 393 : model_(model), | 394 : model_(model), |
| 394 style_(style), | 395 style_(style), |
| 395 listener_(NULL), | 396 listener_(nullptr), |
| 396 selected_index_(style == STYLE_ACTION ? 0 : model_->GetDefaultIndex()), | 397 selected_index_(style == STYLE_ACTION ? 0 : model_->GetDefaultIndex()), |
| 397 invalid_(false), | 398 invalid_(false), |
| 398 menu_model_(new ComboboxMenuModel(this, model)), | 399 menu_model_(new ComboboxMenuModel(this, model)), |
| 399 text_button_(new TransparentButton(this, style_ == STYLE_ACTION)), | 400 text_button_(new TransparentButton(this, style_ == STYLE_ACTION)), |
| 400 arrow_button_(new TransparentButton(this, style_ == STYLE_ACTION)), | 401 arrow_button_(new TransparentButton(this, style_ == STYLE_ACTION)), |
| 401 size_to_largest_label_(style_ == STYLE_NORMAL), | 402 size_to_largest_label_(style_ == STYLE_NORMAL), |
| 402 weak_ptr_factory_(this) { | 403 weak_ptr_factory_(this) { |
| 403 ModelChanged(); | 404 ModelChanged(); |
| 404 #if defined(OS_MACOSX) | 405 #if defined(OS_MACOSX) |
| 405 SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY); | 406 SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY); |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 708 } | 709 } |
| 709 } | 710 } |
| 710 | 711 |
| 711 void Combobox::OnFocus() { | 712 void Combobox::OnFocus() { |
| 712 if (GetInputMethod()) | 713 if (GetInputMethod()) |
| 713 GetInputMethod()->SetFocusedTextInputClient(GetPrefixSelector()); | 714 GetInputMethod()->SetFocusedTextInputClient(GetPrefixSelector()); |
| 714 | 715 |
| 715 View::OnFocus(); | 716 View::OnFocus(); |
| 716 // Border renders differently when focused. | 717 // Border renders differently when focused. |
| 717 SchedulePaint(); | 718 SchedulePaint(); |
| 719 if (UseMd()) |
| 720 FocusRing::Install(this); |
| 718 } | 721 } |
| 719 | 722 |
| 720 void Combobox::OnBlur() { | 723 void Combobox::OnBlur() { |
| 721 if (GetInputMethod()) | 724 if (GetInputMethod()) |
| 722 GetInputMethod()->DetachTextInputClient(GetPrefixSelector()); | 725 GetInputMethod()->DetachTextInputClient(GetPrefixSelector()); |
| 723 | 726 |
| 724 if (selector_) | 727 if (selector_) |
| 725 selector_->OnViewBlur(); | 728 selector_->OnViewBlur(); |
| 726 // Border renders differently when focused. | 729 // Border renders differently when focused. |
| 727 SchedulePaint(); | 730 SchedulePaint(); |
| 731 if (UseMd()) |
| 732 FocusRing::Uninstall(this); |
| 728 } | 733 } |
| 729 | 734 |
| 730 void Combobox::GetAccessibleState(ui::AXViewState* state) { | 735 void Combobox::GetAccessibleState(ui::AXViewState* state) { |
| 731 state->role = ui::AX_ROLE_COMBO_BOX; | 736 state->role = ui::AX_ROLE_COMBO_BOX; |
| 732 state->name = accessible_name_; | 737 state->name = accessible_name_; |
| 733 state->value = model_->GetItemAt(selected_index_); | 738 state->value = model_->GetItemAt(selected_index_); |
| 734 state->index = selected_index_; | 739 state->index = selected_index_; |
| 735 state->count = model_->GetItemCount(); | 740 state->count = model_->GetItemCount(); |
| 736 } | 741 } |
| 737 | 742 |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 992 const int kMdPaddingWidth = 8; | 997 const int kMdPaddingWidth = 8; |
| 993 int arrow_pad = UseMd() ? kMdPaddingWidth | 998 int arrow_pad = UseMd() ? kMdPaddingWidth |
| 994 : PlatformStyle::kComboboxNormalArrowPadding; | 999 : PlatformStyle::kComboboxNormalArrowPadding; |
| 995 int padding = style_ == STYLE_NORMAL | 1000 int padding = style_ == STYLE_NORMAL |
| 996 ? arrow_pad * 2 | 1001 ? arrow_pad * 2 |
| 997 : kActionLeftPadding + kActionRightPadding; | 1002 : kActionLeftPadding + kActionRightPadding; |
| 998 return ArrowSize().width() + padding; | 1003 return ArrowSize().width() + padding; |
| 999 } | 1004 } |
| 1000 | 1005 |
| 1001 } // namespace views | 1006 } // namespace views |
| OLD | NEW |