Index: third_party/WebKit/Source/web/resources/listPicker.js |
diff --git a/third_party/WebKit/Source/web/resources/listPicker.js b/third_party/WebKit/Source/web/resources/listPicker.js |
index 575523f27242badb2d64ec452b27e0479a536e93..0563a4c2cb97ee9b539f2f1b6ae318b715a97f7e 100644 |
--- a/third_party/WebKit/Source/web/resources/listPicker.js |
+++ b/third_party/WebKit/Source/web/resources/listPicker.js |
@@ -218,11 +218,11 @@ ListPicker.prototype._handleKeyDown = function(event) { |
ListPicker.prototype._fixWindowSize = function() { |
this._selectElement.style.height = ""; |
- var zoom = this._config.zoomFactor; |
- var maxHeight = this._selectElement.offsetHeight * zoom; |
- var noScrollHeight = (this._calculateScrollHeight() + ListPicker.ListboxSelectBorder * 2) * zoom; |
- var scrollbarWidth = getScrollbarWidth() * zoom; |
- var elementOffsetWidth = this._selectElement.offsetWidth * zoom; |
+ var scale = this._config.scaleFactor; |
+ var maxHeight = this._selectElement.offsetHeight; |
+ var noScrollHeight = (this._calculateScrollHeight() + ListPicker.ListboxSelectBorder * 2); |
+ var scrollbarWidth = getScrollbarWidth(); |
+ var elementOffsetWidth = this._selectElement.offsetWidth; |
var desiredWindowHeight = noScrollHeight; |
var desiredWindowWidth = elementOffsetWidth; |
// If we already have a vertical scrollbar, subtract it out, it will get re-added below. |
@@ -236,22 +236,24 @@ ListPicker.prototype._fixWindowSize = function() { |
desiredWindowWidth += scrollbarWidth; |
expectingScrollbar = true; |
} |
- desiredWindowWidth = Math.max(this._config.anchorRectInScreen.width, desiredWindowWidth); |
- var windowRect = adjustWindowRect(desiredWindowWidth, desiredWindowHeight, elementOffsetWidth, 0); |
+ // Screen coordinate for anchorRectInScreen and windowRect is DIP. |
+ desiredWindowWidth = Math.max(this._config.anchorRectInScreen.width * scale, desiredWindowWidth); |
+ var windowRect = adjustWindowRect(desiredWindowWidth / scale, desiredWindowHeight / scale, elementOffsetWidth / scale, 0); |
// If the available screen space is smaller than maxHeight, we will get an unexpected scrollbar. |
- if (!expectingScrollbar && windowRect.height < noScrollHeight) { |
- desiredWindowWidth = windowRect.width + scrollbarWidth; |
- windowRect = adjustWindowRect(desiredWindowWidth, windowRect.height, windowRect.width, windowRect.height); |
+ if (!expectingScrollbar && windowRect.height < noScrollHeight / scale) { |
+ desiredWindowWidth = windowRect.width * scale + scrollbarWidth; |
+ windowRect = adjustWindowRect(desiredWindowWidth / scale, windowRect.height, windowRect.width, windowRect.height); |
} |
- this._selectElement.style.width = (windowRect.width / zoom) + "px"; |
- this._selectElement.style.height = (windowRect.height / zoom) + "px"; |
- this._element.style.height = (windowRect.height / zoom) + "px"; |
+ this._selectElement.style.width = (windowRect.width * scale) + "px"; |
+ this._selectElement.style.height = (windowRect.height * scale) + "px"; |
+ this._element.style.height = (windowRect.height * scale) + "px"; |
setWindowRect(windowRect); |
}; |
ListPicker.prototype._calculateScrollHeight = function() { |
// Element.scrollHeight returns an integer value but this calculate the |
// actual fractional value. |
+ // TODO(tkent): This can be too large? crbug.com/579863 |
var top = Infinity; |
var bottom = -Infinity; |
for (var i = 0; i < this._selectElement.children.length; i++) { |