Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Side by Side Diff: third_party/WebKit/Source/web/resources/listPicker.js

Issue 2606853002: SELECT popup: Don't use non-100% zoom level in popup. (Closed)
Patch Set: . Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 "use strict"; 1 "use strict";
2 // Copyright (c) 2014 The Chromium Authors. All rights reserved. 2 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 4 // found in the LICENSE file.
5 5
6 var global = { 6 var global = {
7 argumentsReceived: false, 7 argumentsReceived: false,
8 params: null, 8 params: null,
9 picker: null 9 picker: null
10 }; 10 };
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 // be reopened. 211 // be reopened.
212 setTimeout(function () { 212 setTimeout(function () {
213 window.pagePopupController.closePopup(); 213 window.pagePopupController.closePopup();
214 }, 0); 214 }, 0);
215 event.preventDefault(); 215 event.preventDefault();
216 } 216 }
217 }; 217 };
218 218
219 ListPicker.prototype._fixWindowSize = function() { 219 ListPicker.prototype._fixWindowSize = function() {
220 this._selectElement.style.height = ""; 220 this._selectElement.style.height = "";
221 var zoom = this._config.zoomFactor; 221 var scale = this._config.scaleFactor;
222 var maxHeight = this._selectElement.offsetHeight * zoom; 222 var maxHeight = this._selectElement.offsetHeight;
223 var noScrollHeight = (this._calculateScrollHeight() + ListPicker.ListboxSele ctBorder * 2) * zoom; 223 var noScrollHeight = (this._calculateScrollHeight() + ListPicker.ListboxSele ctBorder * 2);
224 var scrollbarWidth = getScrollbarWidth() * zoom; 224 var scrollbarWidth = getScrollbarWidth();
225 var elementOffsetWidth = this._selectElement.offsetWidth * zoom; 225 var elementOffsetWidth = this._selectElement.offsetWidth;
226 var desiredWindowHeight = noScrollHeight; 226 var desiredWindowHeight = noScrollHeight;
227 var desiredWindowWidth = elementOffsetWidth; 227 var desiredWindowWidth = elementOffsetWidth;
228 // If we already have a vertical scrollbar, subtract it out, it will get re- added below. 228 // If we already have a vertical scrollbar, subtract it out, it will get re- added below.
229 if (this._selectElement.scrollHeight > this._selectElement.clientHeight) 229 if (this._selectElement.scrollHeight > this._selectElement.clientHeight)
230 desiredWindowWidth -= scrollbarWidth; 230 desiredWindowWidth -= scrollbarWidth;
231 var expectingScrollbar = false; 231 var expectingScrollbar = false;
232 if (desiredWindowHeight > maxHeight) { 232 if (desiredWindowHeight > maxHeight) {
233 desiredWindowHeight = maxHeight; 233 desiredWindowHeight = maxHeight;
234 // Setting overflow to auto does not increase width for the scrollbar 234 // Setting overflow to auto does not increase width for the scrollbar
235 // so we need to do it manually. 235 // so we need to do it manually.
236 desiredWindowWidth += scrollbarWidth; 236 desiredWindowWidth += scrollbarWidth;
237 expectingScrollbar = true; 237 expectingScrollbar = true;
238 } 238 }
239 desiredWindowWidth = Math.max(this._config.anchorRectInScreen.width, desired WindowWidth); 239 // Screen coordinate for anchorRectInScreen and windowRect is DIP.
240 var windowRect = adjustWindowRect(desiredWindowWidth, desiredWindowHeight, e lementOffsetWidth, 0); 240 desiredWindowWidth = Math.max(this._config.anchorRectInScreen.width * scale, desiredWindowWidth);
241 var windowRect = adjustWindowRect(desiredWindowWidth / scale, desiredWindowH eight / scale, elementOffsetWidth / scale, 0);
241 // If the available screen space is smaller than maxHeight, we will get an u nexpected scrollbar. 242 // If the available screen space is smaller than maxHeight, we will get an u nexpected scrollbar.
242 if (!expectingScrollbar && windowRect.height < noScrollHeight) { 243 if (!expectingScrollbar && windowRect.height < noScrollHeight / scale) {
243 desiredWindowWidth = windowRect.width + scrollbarWidth; 244 desiredWindowWidth = windowRect.width * scale + scrollbarWidth;
244 windowRect = adjustWindowRect(desiredWindowWidth, windowRect.height, win dowRect.width, windowRect.height); 245 windowRect = adjustWindowRect(desiredWindowWidth / scale, windowRect.hei ght, windowRect.width, windowRect.height);
245 } 246 }
246 this._selectElement.style.width = (windowRect.width / zoom) + "px"; 247 this._selectElement.style.width = (windowRect.width * scale) + "px";
247 this._selectElement.style.height = (windowRect.height / zoom) + "px"; 248 this._selectElement.style.height = (windowRect.height * scale) + "px";
248 this._element.style.height = (windowRect.height / zoom) + "px"; 249 this._element.style.height = (windowRect.height * scale) + "px";
249 setWindowRect(windowRect); 250 setWindowRect(windowRect);
250 }; 251 };
251 252
252 ListPicker.prototype._calculateScrollHeight = function() { 253 ListPicker.prototype._calculateScrollHeight = function() {
253 // Element.scrollHeight returns an integer value but this calculate the 254 // Element.scrollHeight returns an integer value but this calculate the
254 // actual fractional value. 255 // actual fractional value.
256 // TODO(tkent): This can be too large? crbug.com/579863
255 var top = Infinity; 257 var top = Infinity;
256 var bottom = -Infinity; 258 var bottom = -Infinity;
257 for (var i = 0; i < this._selectElement.children.length; i++) { 259 for (var i = 0; i < this._selectElement.children.length; i++) {
258 var rect = this._selectElement.children[i].getBoundingClientRect(); 260 var rect = this._selectElement.children[i].getBoundingClientRect();
259 // Skip hidden elements. 261 // Skip hidden elements.
260 if (rect.width === 0 && rect.height === 0) 262 if (rect.width === 0 && rect.height === 0)
261 continue; 263 continue;
262 top = Math.min(top, rect.top); 264 top = Math.min(top, rect.top);
263 bottom = Math.max(bottom, rect.bottom); 265 bottom = Math.max(bottom, rect.bottom);
264 } 266 }
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 } 451 }
450 this._applyItemStyle(element, config.style); 452 this._applyItemStyle(element, config.style);
451 }; 453 };
452 454
453 if (window.dialogArguments) { 455 if (window.dialogArguments) {
454 initialize(dialogArguments); 456 initialize(dialogArguments);
455 } else { 457 } else {
456 window.addEventListener("message", handleMessage, false); 458 window.addEventListener("message", handleMessage, false);
457 window.setTimeout(handleArgumentsTimeout, 1000); 459 window.setTimeout(handleArgumentsTimeout, 1000);
458 } 460 }
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/PopupMenuImpl.cpp ('k') | third_party/WebKit/Source/web/resources/pickerCommon.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698