mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out 2 changesets (bug 932783, bug 937750) for unrelated mochitest-metro test bustage on a CLOSED TREE
Backed out changeset 7acfc449097b (bug 937750) Backed out changeset 3bde0e601ab8 (bug 932783)
This commit is contained in:
parent
28b297c750
commit
9f1bc22837
@ -39,47 +39,30 @@ var APZCObserver = {
|
||||
handleEvent: function APZC_handleEvent(aEvent) {
|
||||
switch (aEvent.type) {
|
||||
case 'pageshow':
|
||||
if (aEvent.target != Browser.selectedBrowser.contentDocument) {
|
||||
if (aEvent.target != Browser.selectedBrowser.contentDocument)
|
||||
break;
|
||||
// fall through to TabSelect:
|
||||
case 'TabSelect':
|
||||
// ROOT_ID doesn't really identify the view we want. When we call
|
||||
// this on a content document (tab), findElementWithViewId will
|
||||
// always return the root content document associated with the
|
||||
// scrollable frame.
|
||||
const ROOT_ID = 1;
|
||||
let windowUtils = Browser.selectedBrowser.contentWindow.
|
||||
QueryInterface(Ci.nsIInterfaceRequestor).
|
||||
getInterface(Ci.nsIDOMWindowUtils);
|
||||
// findElementWithViewId will throw if it can't find it
|
||||
let element;
|
||||
try {
|
||||
element = windowUtils.findElementWithViewId(ROOT_ID);
|
||||
} catch (e) {
|
||||
// Not present; nothing to do here
|
||||
break;
|
||||
}
|
||||
// intentional fall through
|
||||
case 'TabSelect': {
|
||||
// Start off with something reasonable. The apzc will handle these
|
||||
// calculations once scrolling starts.
|
||||
let doc = Browser.selectedBrowser.contentDocument.documentElement;
|
||||
let win = Browser.selectedBrowser.contentWindow;
|
||||
let factor = 0.2;
|
||||
let portX = 0;
|
||||
let portY = 0;
|
||||
let portWidth = ContentAreaObserver.width;
|
||||
let portHeight = ContentAreaObserver.height;
|
||||
|
||||
if (portWidth < doc.scrollWidth) {
|
||||
portWidth += ContentAreaObserver.width * factor;
|
||||
if (portWidth > doc.scrollWidth) {
|
||||
portWidth = doc.scrollWidth;
|
||||
}
|
||||
}
|
||||
if (portHeight < doc.scrollHeight) {
|
||||
portHeight += ContentAreaObserver.height * factor;
|
||||
if (portHeight > doc.scrollHeight) {
|
||||
portHeight = doc.scrollHeight;
|
||||
}
|
||||
}
|
||||
if (win.scrollX > 0) {
|
||||
portX -= ContentAreaObserver.width * factor;
|
||||
}
|
||||
if (win.scrollY > 0) {
|
||||
portY -= ContentAreaObserver.height * factor;
|
||||
}
|
||||
let cwu = Browser.selectedBrowser.contentWindow
|
||||
.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
cwu.setDisplayPortForElement(portX, portY,
|
||||
portWidth, portHeight,
|
||||
Browser.selectedBrowser.contentDocument.documentElement);
|
||||
windowUtils.setDisplayPortForElement(0, 0, ContentAreaObserver.width,
|
||||
ContentAreaObserver.height,
|
||||
element);
|
||||
break;
|
||||
}
|
||||
case 'TabOpen': {
|
||||
let browser = aEvent.originalTarget.linkedBrowser;
|
||||
browser.addEventListener("pageshow", this, true);
|
||||
|
@ -253,7 +253,6 @@ var SelectionHelperUI = {
|
||||
_endMark: null,
|
||||
_caretMark: null,
|
||||
_target: null,
|
||||
_showAfterUpdate: false,
|
||||
_movement: { active: false, x:0, y: 0 },
|
||||
_activeSelectionRect: null,
|
||||
_selectionMarkIds: [],
|
||||
@ -351,29 +350,13 @@ var SelectionHelperUI = {
|
||||
*/
|
||||
|
||||
observe: function (aSubject, aTopic, aData) {
|
||||
switch (aTopic) {
|
||||
case "attach_edit_session_to_content":
|
||||
let event = aSubject;
|
||||
this.attachEditSession(Browser.selectedTab.browser,
|
||||
event.clientX, event.clientY);
|
||||
break;
|
||||
|
||||
case "apzc-handle-pan-begin":
|
||||
if (this.isActive && this.layerMode == kContentLayer) {
|
||||
this._hideMonocles();
|
||||
}
|
||||
break;
|
||||
|
||||
case "apzc-handle-pan-end":
|
||||
// The selection range callback will check to see if the new
|
||||
// position is off the screen, in which case it shuts down and
|
||||
// clears the selection.
|
||||
if (this.isActive && this.layerMode == kContentLayer) {
|
||||
this._showAfterUpdate = true;
|
||||
this._sendAsyncMessage("Browser:SelectionUpdate", {});
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch (aTopic) {
|
||||
case "attach_edit_session_to_content":
|
||||
let event = aSubject;
|
||||
SelectionHelperUI.attachEditSession(Browser.selectedTab.browser,
|
||||
event.clientX, event.clientY);
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
@ -547,10 +530,7 @@ var SelectionHelperUI = {
|
||||
*/
|
||||
|
||||
init: function () {
|
||||
let os = Services.obs;
|
||||
os.addObserver(this, "attach_edit_session_to_content", false);
|
||||
os.addObserver(this, "apzc-handle-pan-begin", false);
|
||||
os.addObserver(this, "apzc-handle-pan-end", false);
|
||||
Services.obs.addObserver(this, "attach_edit_session_to_content", false);
|
||||
},
|
||||
|
||||
_init: function _init(aMsgTarget) {
|
||||
@ -928,16 +908,6 @@ var SelectionHelperUI = {
|
||||
this._shutdown();
|
||||
},
|
||||
|
||||
_checkMonocleVisibility: function(aX, aY) {
|
||||
if (aX < 0 || aY < 0 ||
|
||||
aX > ContentAreaObserver.viewableWidth ||
|
||||
aY > ContentAreaObserver.viewableHeight) {
|
||||
this.closeEditSession(true);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
/*
|
||||
* Message handlers
|
||||
*/
|
||||
@ -950,43 +920,26 @@ var SelectionHelperUI = {
|
||||
let haveSelectionRect = true;
|
||||
|
||||
if (json.updateStart) {
|
||||
let x = this._msgTarget.btocx(json.start.xPos, true);
|
||||
let y = this._msgTarget.btocx(json.start.yPos, true);
|
||||
if (!this._checkMonocleVisibility(x, y)) {
|
||||
return;
|
||||
}
|
||||
this.startMark.position(x, y);
|
||||
this.startMark.position(this._msgTarget.btocx(json.start.xPos, true),
|
||||
this._msgTarget.btocy(json.start.yPos, true));
|
||||
}
|
||||
if (json.updateEnd) {
|
||||
let x = this._msgTarget.btocx(json.end.xPos, true);
|
||||
let y = this._msgTarget.btocx(json.end.yPos, true);
|
||||
if (!this._checkMonocleVisibility(x, y)) {
|
||||
return;
|
||||
}
|
||||
this.endMark.position(x, y);
|
||||
this.endMark.position(this._msgTarget.btocx(json.end.xPos, true),
|
||||
this._msgTarget.btocy(json.end.yPos, true));
|
||||
}
|
||||
|
||||
if (json.updateCaret) {
|
||||
let x = this._msgTarget.btocx(json.caret.xPos, true);
|
||||
let y = this._msgTarget.btocx(json.caret.yPos, true);
|
||||
if (!this._checkMonocleVisibility(x, y)) {
|
||||
return;
|
||||
}
|
||||
// If selectionRangeFound is set SelectionHelper found a range we can
|
||||
// attach to. If not, there's no text in the control, and hence no caret
|
||||
// position information we can use.
|
||||
haveSelectionRect = json.selectionRangeFound;
|
||||
if (json.selectionRangeFound) {
|
||||
this.caretMark.position(x, y);
|
||||
this.caretMark.position(this._msgTarget.btocx(json.caret.xPos, true),
|
||||
this._msgTarget.btocy(json.caret.yPos, true));
|
||||
this.caretMark.show();
|
||||
}
|
||||
}
|
||||
|
||||
if (this._showAfterUpdate) {
|
||||
this._showAfterUpdate = false;
|
||||
this._showMonocles(!json.updateCaret);
|
||||
}
|
||||
|
||||
this._targetIsEditable = json.targetIsEditable;
|
||||
this._activeSelectionRect = haveSelectionRect ?
|
||||
this._msgTarget.rectBrowserToClient(json.selection, true) :
|
||||
|
Loading…
Reference in New Issue
Block a user