Bug 430745 - Select dropdown popups will anchor on a selected element for Mac r=jaws, mconley draft
authorbeachjar <beachjar@msu.edu>
Mon, 07 Nov 2016 16:19:19 -0500
changeset 442510 30626d554c0311744b63c7d6010506e83b8232ef
parent 442499 1a3194836cb4c3da6ba3a9742a2d25cf26669b55
child 537805 7b6aa26ebd767d27da9e8a4a3b33f041ccf97732
push id36710
push userbmo:jaws@mozilla.com
push dateTue, 22 Nov 2016 15:57:16 +0000
reviewersjaws, mconley
bugs430745
milestone53.0a1
Bug 430745 - Select dropdown popups will anchor on a selected element for Mac r=jaws, mconley Select dropdown popups now anchor on the currently selected element in a <select> dropdown for Mac instead of above/below the <select> dropdown. MozReview-Commit-ID: JlgrZdArehq
toolkit/modules/SelectParentHelper.jsm
--- a/toolkit/modules/SelectParentHelper.jsm
+++ b/toolkit/modules/SelectParentHelper.jsm
@@ -3,16 +3,19 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 this.EXPORTED_SYMBOLS = [
   "SelectParentHelper"
 ];
 
+const {utils: Cu} = Components;
+const {AppConstants} = Cu.import("resource://gre/modules/AppConstants.jsm");
+
 // Maximum number of rows to display in the select dropdown.
 const MAX_ROWS = 20;
 
 // Interval between autoscrolls
 const AUTOSCROLL_INTERVAL = 25;
 
 var currentBrowser = null;
 var currentMenulist = null;
@@ -58,17 +61,17 @@ this.SelectParentHelper = {
 
     menupopup.classList.toggle("isOpenedViaTouch", isOpenedViaTouch);
 
     let constraintRect = browser.getBoundingClientRect();
     constraintRect = new win.DOMRect(constraintRect.left + win.mozInnerScreenX,
                                      constraintRect.top + win.mozInnerScreenY,
                                      constraintRect.width, constraintRect.height);
     menupopup.setConstraintRect(constraintRect);
-    menupopup.openPopupAtScreenRect("after_start", rect.left, rect.top, rect.width, rect.height, false, false);
+    menupopup.openPopupAtScreenRect(AppConstants.platform == "macosx" ? "selection" : "after_start", rect.left, rect.top, rect.width, rect.height, false, false);
 
     // Set up for dragging
     menupopup.setCaptureAlways();
     this.draggedOverPopup = false;
     menupopup.addEventListener("mousemove", this);
   },
 
   hide: function(menulist, browser) {