Chromium Code Reviews| Index: ui/views/view.cc |
| diff --git a/ui/views/view.cc b/ui/views/view.cc |
| index d02ebd4fbc88a5921f5c054c213ac75600d4f316..078b48d0db6987b6392d87f87cb337e6d7ae59bd 100644 |
| --- a/ui/views/view.cc |
| +++ b/ui/views/view.cc |
| @@ -23,6 +23,7 @@ |
| #include "base/trace_event/trace_event.h" |
| #include "build/build_config.h" |
| #include "third_party/skia/include/core/SkRect.h" |
| +#include "ui/accessibility/ax_action_data.h" |
| #include "ui/accessibility/ax_enums.h" |
| #include "ui/base/cursor/cursor.h" |
| #include "ui/base/dragdrop/drag_drop_types.h" |
| @@ -36,6 +37,7 @@ |
| #include "ui/compositor/paint_recorder.h" |
| #include "ui/compositor/transform_recorder.h" |
| #include "ui/display/screen.h" |
| +#include "ui/events/base_event_utils.h" |
| #include "ui/events/event_target_iterator.h" |
| #include "ui/gfx/canvas.h" |
| #include "ui/gfx/geometry/point3_f.h" |
| @@ -1398,6 +1400,37 @@ bool View::ExceededDragThreshold(const gfx::Vector2d& delta) { |
| // Accessibility---------------------------------------------------------------- |
| bool View::HandleAccessibleAction(const ui::AXActionData& action_data) { |
| + switch (action_data.action) { |
| + case ui::AX_ACTION_BLUR: |
| + if (HasFocus()) |
| + GetFocusManager()->ClearFocus(); |
| + return true; |
| + case ui::AX_ACTION_DO_DEFAULT: { |
| + gfx::Rect rect = GetLocalBounds(); |
| + gfx::Point center = rect.CenterPoint(); |
|
tapted
2017/04/03 23:28:23
nit: const gfx::Point center = GetLocalBounds().Ce
dmazzoni
2017/04/03 23:55:16
Done.
|
| + OnMousePressed(ui::MouseEvent( |
| + ui::ET_MOUSE_PRESSED, center, center, ui::EventTimeForNow(), |
| + ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| + OnMouseReleased(ui::MouseEvent( |
| + ui::ET_MOUSE_RELEASED, center, center, ui::EventTimeForNow(), |
| + ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| + return true; |
| + } |
| + case ui::AX_ACTION_FOCUS: |
| + if (IsAccessibilityFocusable()) |
| + RequestFocus(); |
| + return true; |
| + case ui::AX_ACTION_SCROLL_TO_MAKE_VISIBLE: |
| + ScrollRectToVisible(GetLocalBounds()); |
| + return true; |
| + case ui::AX_ACTION_SHOW_CONTEXT_MENU: |
| + ShowContextMenu(bounds().CenterPoint(), ui::MENU_SOURCE_KEYBOARD); |
|
tapted
2017/04/03 23:28:23
I think ShowContextMenu expects screen coordinates
dmazzoni
2017/04/03 23:55:16
Good catch! That was a bug from before, I guess no
|
| + return true; |
| + default: |
| + // Some actions are handled by subclasses of View. |
| + break; |
| + } |
| + |
| return false; |
| } |