| Index: ui/views/controls/button/custom_button.cc
|
| diff --git a/ui/views/controls/button/custom_button.cc b/ui/views/controls/button/custom_button.cc
|
| index 61b595bbfeb2f059327527ad3c1ef18e76afb270..aafbf2d65a63aa32810d6da8d352f9bf1663f8af 100644
|
| --- a/ui/views/controls/button/custom_button.cc
|
| +++ b/ui/views/controls/button/custom_button.cc
|
| @@ -251,6 +251,13 @@ void CustomButton::OnGestureEvent(ui::GestureEvent* event) {
|
| }
|
|
|
| bool CustomButton::AcceleratorPressed(const ui::Accelerator& accelerator) {
|
| + // Should only handle accelerators when active. However, only top level
|
| + // widgets can be active, so for child widgets check if they are focused
|
| + // instead.
|
| + if ((IsChildWidget() && !FocusInChildWidget()) ||
|
| + (!IsChildWidget() && !GetWidget()->IsActive())) {
|
| + return false;
|
| + }
|
| SetState(STATE_NORMAL);
|
| // TODO(beng): remove once NotifyClick takes ui::Event.
|
| ui::MouseEvent synthetic_event(
|
| @@ -378,4 +385,14 @@ void CustomButton::OnBlur() {
|
| SetState(STATE_NORMAL);
|
| }
|
|
|
| +bool CustomButton::IsChildWidget() const {
|
| + return GetWidget() && GetWidget()->GetTopLevelWidget() != GetWidget();
|
| +}
|
| +
|
| +bool CustomButton::FocusInChildWidget() const {
|
| + return GetWidget() &&
|
| + GetWidget()->GetRootView()->Contains(
|
| + GetFocusManager()->GetFocusedView());
|
| +}
|
| +
|
| } // namespace views
|
|
|