зеркало из https://github.com/mozilla/gecko-dev.git
Bug 965628 - Clear cursor when leaving iframe. r=yzen
This commit is contained in:
Родитель
ed9a2c503a
Коммит
b4e5b84551
|
@ -155,12 +155,18 @@ this.EventManager.prototype = {
|
|||
let event = aEvent.
|
||||
QueryInterface(Ci.nsIAccessibleVirtualCursorChangeEvent);
|
||||
let reason = event.reason;
|
||||
let oldAccessible = event.oldAccessible;
|
||||
|
||||
if (oldAccessible && oldAccessible.role == Roles.INTERNAL_FRAME) {
|
||||
let mm = Utils.getMessageManager(oldAccessible.DOMNode);
|
||||
mm.sendAsyncMessage('AccessFu:ClearCursor', {});
|
||||
}
|
||||
|
||||
if (this.editState.editing) {
|
||||
aEvent.accessibleDocument.takeFocus();
|
||||
}
|
||||
this.present(
|
||||
Presentation.pivotChanged(position, event.oldAccessible, reason,
|
||||
Presentation.pivotChanged(position, oldAccessible, reason,
|
||||
pivot.startOffset, pivot.endOffset));
|
||||
|
||||
break;
|
||||
|
@ -184,7 +190,7 @@ this.EventManager.prototype = {
|
|||
}
|
||||
case Events.SCROLLING_START:
|
||||
{
|
||||
let vc = Utils.getVirtualCursor(aEvent.accessibleDocument);
|
||||
let vc = Utils.getVirtualCursor(this.contentScope.content.document);
|
||||
vc.moveNext(TraversalRules.Simple, aEvent.accessible, true);
|
||||
break;
|
||||
}
|
||||
|
@ -283,7 +289,7 @@ this.EventManager.prototype = {
|
|||
case Events.DOCUMENT_LOAD_COMPLETE:
|
||||
{
|
||||
this._autoMove = this.contentScope.content.setTimeout(() => {
|
||||
Utils.getVirtualCursor(aEvent.accessibleDocument)
|
||||
Utils.getVirtualCursor(this.contentScope.content.document)
|
||||
.moveNext(TraversalRules.Simple, aEvent.accessible, true);
|
||||
}, 500);
|
||||
break;
|
||||
|
|
|
@ -27,6 +27,15 @@ Logger.debug('content-script.js');
|
|||
|
||||
let eventManager = null;
|
||||
|
||||
function clearCursor(aMessage) {
|
||||
try {
|
||||
Utils.getVirtualCursor(content.document).position = null;
|
||||
forwardToChild(aMessage);
|
||||
} catch (x) {
|
||||
Logger.logException(x);
|
||||
}
|
||||
}
|
||||
|
||||
function moveCursor(aMessage) {
|
||||
if (Logger.logLevel >= Logger.DEBUG) {
|
||||
Logger.debug(aMessage.name, JSON.stringify(aMessage.json, null, ' '));
|
||||
|
@ -144,7 +153,11 @@ function forwardToChild(aMessage, aListener, aVCPosition) {
|
|||
}
|
||||
|
||||
let mm = Utils.getMessageManager(acc.DOMNode);
|
||||
mm.addMessageListener(aMessage.name, aListener);
|
||||
|
||||
if (aListener) {
|
||||
mm.addMessageListener(aMessage.name, aListener);
|
||||
}
|
||||
|
||||
// XXX: This is a silly way to make a deep copy
|
||||
let newJSON = JSON.parse(JSON.stringify(aMessage.json));
|
||||
newJSON.origin = 'parent';
|
||||
|
@ -381,6 +394,7 @@ addMessageListener(
|
|||
addMessageListener('AccessFu:AdjustRange', adjustRange);
|
||||
addMessageListener('AccessFu:MoveCaret', moveCaret);
|
||||
addMessageListener('AccessFu:MoveByGranularity', moveByGranularity);
|
||||
addMessageListener('AccessFu:ClearCursor', clearCursor);
|
||||
|
||||
if (!eventManager) {
|
||||
eventManager = new EventManager(this);
|
||||
|
@ -401,6 +415,7 @@ addMessageListener(
|
|||
removeMessageListener('AccessFu:Scroll', scroll);
|
||||
removeMessageListener('AccessFu:MoveCaret', moveCaret);
|
||||
removeMessageListener('AccessFu:MoveByGranularity', moveByGranularity);
|
||||
removeMessageListener('AccessFu:ClearCursor', clearCursor);
|
||||
|
||||
eventManager.stop();
|
||||
});
|
||||
|
|
Загрузка…
Ссылка в новой задаче