Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js |
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js |
index 770f40f4a8b41626fe4fe44a3b12105021d72d9a..9ab218f3d69f83faae68f0092cf1163df7c1049a 100644 |
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js |
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js |
@@ -129,11 +129,21 @@ DesktopAutomationHandler.prototype = { |
* @param {!AutomationEvent} evt |
*/ |
onEventIfInRange: function(evt) { |
- // TODO(dtseng): Consider the end of the current range as well. |
- if (AutomationUtil.isDescendantOf( |
- ChromeVoxState.instance.currentRange.start.node, evt.target) || |
- evt.target.state.focused) |
- this.onEventDefault(evt); |
+ if (evt.target.root.role != RoleType.desktop && |
+ ChromeVoxState.instance.mode === ChromeVoxMode.CLASSIC) |
+ return; |
+ |
+ var prev = ChromeVoxState.instance.currentRange; |
+ if (AutomationUtil.isDescendantOf(prev.start.node, evt.target) || |
+ AutomationUtil.isDescendantOf(evt.target, prev.start.node) || |
+ evt.target.state.focused) { |
+ // Intentionally skip setting range. |
+ new Output() |
+ .withRichSpeechAndBraille(cursors.Range.fromNode(evt.target), |
+ prev, |
+ Output.EventType.NAVIGATE) |
+ .go(); |
+ } |
}, |
/** |