author | Neil Deakin <neil@mozilla.com> |
Thu, 17 Nov 2016 09:56:43 -0500 | |
changeset 323100 | 74a7f0bc633a96ccb0b862f5ebb5366d2a134f0c |
parent 323099 | a925f48bcc829d19b1c9f35d15c5a5f03b23b91c |
child 323101 | 98d67bafe40ad311ecb0c6b07358840ae86a2e0c |
push id | 30967 |
push user | philringnalda@gmail.com |
push date | Fri, 18 Nov 2016 03:21:38 +0000 |
treeherder | mozilla-central@8e476f8bd52d [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mconley |
bugs | 1314647 |
milestone | 53.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
toolkit/modules/SelectContentHelper.jsm | file | annotate | diff | comparison | revisions | |
toolkit/modules/SelectParentHelper.jsm | file | annotate | diff | comparison | revisions |
--- a/toolkit/modules/SelectContentHelper.jsm +++ b/toolkit/modules/SelectContentHelper.jsm @@ -48,16 +48,17 @@ Object.defineProperty(SelectContentHelpe }); this.SelectContentHelper.prototype = { init: function() { this.global.addMessageListener("Forms:SelectDropDownItem", this); this.global.addMessageListener("Forms:DismissedDropDown", this); this.global.addMessageListener("Forms:MouseOver", this); this.global.addMessageListener("Forms:MouseOut", this); + this.global.addMessageListener("Forms:MouseUp", this); this.global.addEventListener("pagehide", this); this.global.addEventListener("mozhidedropdown", this); let MutationObserver = this.element.ownerDocument.defaultView.MutationObserver; this.mut = new MutationObserver(mutations => { // Something changed the <select> while it was open, so // we'll poke a DeferredTask to update the parent sometime // in the very near future. this._updateTimer.arm(); @@ -66,16 +67,17 @@ this.SelectContentHelper.prototype = { }, uninit: function() { this.element.openInParentProcess = false; this.global.removeMessageListener("Forms:SelectDropDownItem", this); this.global.removeMessageListener("Forms:DismissedDropDown", this); this.global.removeMessageListener("Forms:MouseOver", this); this.global.removeMessageListener("Forms:MouseOut", this); + this.global.removeMessageListener("Forms:MouseUp", this); this.global.removeEventListener("pagehide", this); this.global.removeEventListener("mozhidedropdown", this); this.element = null; this.global = null; this.mut.disconnect(); this._updateTimer.disarm(); this._updateTimer = null; gOpen = false; @@ -167,16 +169,20 @@ this.SelectContentHelper.prototype = { case "Forms:MouseOver": DOMUtils.setContentState(this.element, kStateHover); break; case "Forms:MouseOut": DOMUtils.removeContentState(this.element, kStateHover); break; + case "Forms:MouseUp": + DOMUtils.removeContentState(this.element, kStateActive); + break; + } }, handleEvent: function(event) { switch (event.type) { case "pagehide": if (this.element.ownerDocument === event.target) { this.global.sendAsyncMessage("Forms:HideDropDown", {});
--- a/toolkit/modules/SelectParentHelper.jsm +++ b/toolkit/modules/SelectParentHelper.jsm @@ -63,16 +63,20 @@ this.SelectParentHelper = { hide: function(menulist, browser) { if (currentBrowser == browser) { menulist.menupopup.hidePopup(); } }, handleEvent: function(event) { switch (event.type) { + case "mouseup": + currentBrowser.messageManager.sendAsyncMessage("Forms:MouseUp", {}); + break; + case "mouseover": currentBrowser.messageManager.sendAsyncMessage("Forms:MouseOver", {}); break; case "mouseout": currentBrowser.messageManager.sendAsyncMessage("Forms:MouseOut", {}); break; @@ -125,26 +129,28 @@ this.SelectParentHelper = { } }, _registerListeners: function(browser, popup) { popup.addEventListener("command", this); popup.addEventListener("popuphidden", this); popup.addEventListener("mouseover", this); popup.addEventListener("mouseout", this); + browser.ownerDocument.defaultView.addEventListener("mouseup", this, true); browser.ownerDocument.defaultView.addEventListener("keydown", this, true); browser.ownerDocument.defaultView.addEventListener("fullscreen", this, true); browser.messageManager.addMessageListener("Forms:UpdateDropDown", this); }, _unregisterListeners: function(browser, popup) { popup.removeEventListener("command", this); popup.removeEventListener("popuphidden", this); popup.removeEventListener("mouseover", this); popup.removeEventListener("mouseout", this); + browser.ownerDocument.defaultView.removeEventListener("mouseup", this, true); browser.ownerDocument.defaultView.removeEventListener("keydown", this, true); browser.ownerDocument.defaultView.removeEventListener("fullscreen", this, true); browser.messageManager.removeMessageListener("Forms:UpdateDropDown", this); }, }; function populateChildren(menulist, options, selectedIndex, zoom,