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

Side by Side Diff: ui/accessibility/platform/ax_platform_node_win.cc

Issue 2948513002: Forward BrowserAccessibility::accHitTest to AXPlatformNode. (Closed)
Patch Set: spelling Created 3 years, 5 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
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 <atlbase.h> 5 #include <atlbase.h>
6 #include <atlcom.h> 6 #include <atlcom.h>
7 #include <limits.h> 7 #include <limits.h>
8 #include <oleacc.h> 8 #include <oleacc.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 return -1; 271 return -1;
272 } 272 }
273 273
274 // 274 //
275 // IAccessible implementation. 275 // IAccessible implementation.
276 // 276 //
277 277
278 STDMETHODIMP AXPlatformNodeWin::accHitTest( 278 STDMETHODIMP AXPlatformNodeWin::accHitTest(
279 LONG x_left, LONG y_top, VARIANT* child) { 279 LONG x_left, LONG y_top, VARIANT* child) {
280 COM_OBJECT_VALIDATE_1_ARG(child); 280 COM_OBJECT_VALIDATE_1_ARG(child);
281
282 gfx::Point point(x_left, y_top);
283 if (!delegate_->GetScreenBoundsRect().Contains(point)) {
284 // Return S_FALSE and VT_EMPTY when outside the object's boundaries.
285 child->vt = VT_EMPTY;
286 return S_FALSE;
287 }
288
281 gfx::NativeViewAccessible hit_child = delegate_->HitTestSync(x_left, y_top); 289 gfx::NativeViewAccessible hit_child = delegate_->HitTestSync(x_left, y_top);
282 if (!hit_child) { 290 if (!hit_child) {
283 child->vt = VT_EMPTY; 291 child->vt = VT_EMPTY;
284 return S_FALSE; 292 return S_FALSE;
285 } 293 }
286 294
287 if (hit_child == this) { 295 if (hit_child == this) {
288 // This object is the best match, so return CHILDID_SELF. It's tempting to 296 // This object is the best match, so return CHILDID_SELF. It's tempting to
289 // simplify the logic and use VT_DISPATCH everywhere, but the Windows 297 // simplify the logic and use VT_DISPATCH everywhere, but the Windows
290 // call AccessibleObjectFromPoint will keep calling accHitTest until some 298 // call AccessibleObjectFromPoint will keep calling accHitTest until some
(...skipping 1408 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 1707
1700 AXPlatformNodeBase* base = 1708 AXPlatformNodeBase* base =
1701 FromNativeViewAccessible(node->GetNativeViewAccessible()); 1709 FromNativeViewAccessible(node->GetNativeViewAccessible());
1702 if (base && !IsDescendant(base)) 1710 if (base && !IsDescendant(base))
1703 base = nullptr; 1711 base = nullptr;
1704 1712
1705 return static_cast<AXPlatformNodeWin*>(base); 1713 return static_cast<AXPlatformNodeWin*>(base);
1706 } 1714 }
1707 1715
1708 } // namespace ui 1716 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698