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

Side by Side Diff: third_party/WebKit/Source/web/resources/pickerCommon.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
« no previous file with comments | « third_party/WebKit/Source/web/resources/listPicker.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 "use strict"; 1 "use strict";
2 /* 2 /*
3 * Copyright (C) 2012 Google Inc. All rights reserved. 3 * Copyright (C) 2012 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 /** 92 /**
93 * @param {!number} width in CSS pixel 93 * @param {!number} width in CSS pixel
94 * @param {!number} height in CSS pixel 94 * @param {!number} height in CSS pixel
95 */ 95 */
96 function resizeWindow(width, height) { 96 function resizeWindow(width, height) {
97 var zoom = global.params.zoomFactor ? global.params.zoomFactor : 1; 97 var zoom = global.params.zoomFactor ? global.params.zoomFactor : 1;
98 setWindowRect(adjustWindowRect(width * zoom, height * zoom, width * zoom, he ight * zoom)); 98 setWindowRect(adjustWindowRect(width * zoom, height * zoom, width * zoom, he ight * zoom));
99 } 99 }
100 100
101 /** 101 /**
102 * @param {!number} width in physical pixel 102 * @param {!number} width in DIP
103 * @param {!number} height in physical pixel 103 * @param {!number} height in DIP
104 * @param {?number} minWidth in physical pixel 104 * @param {?number} minWidth in DIP
105 * @param {?number} minHeight in physical pixel 105 * @param {?number} minHeight in DIP
106 * @return {!Rectangle} Adjusted rectangle with physical pixels 106 * @return {!Rectangle} Adjusted rectangle in DIP
107 */ 107 */
108 function adjustWindowRect(width, height, minWidth, minHeight) { 108 function adjustWindowRect(width, height, minWidth, minHeight) {
109 if (typeof minWidth !== "number") 109 if (typeof minWidth !== "number")
110 minWidth = 0; 110 minWidth = 0;
111 if (typeof minHeight !== "number") 111 if (typeof minHeight !== "number")
112 minHeight = 0; 112 minHeight = 0;
113 113
114 var windowRect = new Rectangle(0, 0, Math.ceil(width), Math.ceil(height)); 114 var windowRect = new Rectangle(0, 0, Math.ceil(width), Math.ceil(height));
115 115
116 if (!global.params.anchorRectInScreen) 116 if (!global.params.anchorRectInScreen)
117 return windowRect; 117 return windowRect;
118 118
119 var anchorRect = new Rectangle(global.params.anchorRectInScreen); 119 var anchorRect = new Rectangle(global.params.anchorRectInScreen);
120 var availRect = new Rectangle(window.screen.availLeft, window.screen.availTo p, window.screen.availWidth, window.screen.availHeight); 120 var availRect = new Rectangle(window.screen.availLeft, window.screen.availTo p, window.screen.availWidth, window.screen.availHeight);
121 121
122 _adjustWindowRectVertically(windowRect, availRect, anchorRect, minHeight); 122 _adjustWindowRectVertically(windowRect, availRect, anchorRect, minHeight);
123 _adjustWindowRectHorizontally(windowRect, availRect, anchorRect, minWidth); 123 _adjustWindowRectHorizontally(windowRect, availRect, anchorRect, minWidth);
124 124
125 return windowRect; 125 return windowRect;
126 } 126 }
127 127
128 /** 128 /**
129 * Arguments are physical pixels. 129 * Arguments are DIPs.
130 */ 130 */
131 function _adjustWindowRectVertically(windowRect, availRect, anchorRect, minHeigh t) { 131 function _adjustWindowRectVertically(windowRect, availRect, anchorRect, minHeigh t) {
132 var availableSpaceAbove = anchorRect.y - availRect.y; 132 var availableSpaceAbove = anchorRect.y - availRect.y;
133 availableSpaceAbove = Math.max(0, Math.min(availRect.height, availableSpaceA bove)); 133 availableSpaceAbove = Math.max(0, Math.min(availRect.height, availableSpaceA bove));
134 134
135 var availableSpaceBelow = availRect.maxY - anchorRect.maxY; 135 var availableSpaceBelow = availRect.maxY - anchorRect.maxY;
136 availableSpaceBelow = Math.max(0, Math.min(availRect.height, availableSpaceB elow)); 136 availableSpaceBelow = Math.max(0, Math.min(availRect.height, availableSpaceB elow));
137 if (windowRect.height > availableSpaceBelow && availableSpaceBelow < availab leSpaceAbove) { 137 if (windowRect.height > availableSpaceBelow && availableSpaceBelow < availab leSpaceAbove) {
138 windowRect.height = Math.min(windowRect.height, availableSpaceAbove); 138 windowRect.height = Math.min(windowRect.height, availableSpaceAbove);
139 windowRect.height = Math.max(windowRect.height, minHeight); 139 windowRect.height = Math.max(windowRect.height, minHeight);
140 windowRect.y = anchorRect.y - windowRect.height; 140 windowRect.y = anchorRect.y - windowRect.height;
141 } else { 141 } else {
142 windowRect.height = Math.min(windowRect.height, availableSpaceBelow); 142 windowRect.height = Math.min(windowRect.height, availableSpaceBelow);
143 windowRect.height = Math.max(windowRect.height, minHeight); 143 windowRect.height = Math.max(windowRect.height, minHeight);
144 windowRect.y = anchorRect.maxY; 144 windowRect.y = anchorRect.maxY;
145 } 145 }
146 } 146 }
147 147
148 /** 148 /**
149 * Arguments are physical pixels. 149 * Arguments are DIPs.
150 */ 150 */
151 function _adjustWindowRectHorizontally(windowRect, availRect, anchorRect, minWid th) { 151 function _adjustWindowRectHorizontally(windowRect, availRect, anchorRect, minWid th) {
152 windowRect.width = Math.min(windowRect.width, availRect.width); 152 windowRect.width = Math.min(windowRect.width, availRect.width);
153 windowRect.width = Math.max(windowRect.width, minWidth); 153 windowRect.width = Math.max(windowRect.width, minWidth);
154 windowRect.x = anchorRect.x; 154 windowRect.x = anchorRect.x;
155 // If we are getting clipped, we want to switch alignment to the right side 155 // If we are getting clipped, we want to switch alignment to the right side
156 // of the anchor rect as long as doing so will make the popup not clipped. 156 // of the anchor rect as long as doing so will make the popup not clipped.
157 var rightAlignedX = windowRect.x + anchorRect.width - windowRect.width; 157 var rightAlignedX = windowRect.x + anchorRect.width - windowRect.width;
158 if (rightAlignedX >= availRect.x && (windowRect.maxX > availRect.maxX || glo bal.params.isRTL)) 158 if (rightAlignedX >= availRect.x && (windowRect.maxX > availRect.maxX || glo bal.params.isRTL))
159 windowRect.x = rightAlignedX; 159 windowRect.x = rightAlignedX;
160 } 160 }
161 161
162 /** 162 /**
163 * @param {!Rectangle} rect Window position and size with physical pixels. 163 * @param {!Rectangle} rect Window position and size in DIP.
164 */ 164 */
165 function setWindowRect(rect) { 165 function setWindowRect(rect) {
166 if (window.frameElement) { 166 if (window.frameElement) {
167 window.frameElement.style.width = rect.width + "px"; 167 window.frameElement.style.width = rect.width + "px";
168 window.frameElement.style.height = rect.height + "px"; 168 window.frameElement.style.height = rect.height + "px";
169 } else { 169 } else {
170 window.pagePopupController.setWindowRect(rect.x, rect.y, rect.width, rec t.height); 170 window.pagePopupController.setWindowRect(rect.x, rect.y, rect.width, rec t.height);
171 } 171 }
172 } 172 }
173 173
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 }; 320 };
321 321
322 Picker.prototype.cleanup = function() {}; 322 Picker.prototype.cleanup = function() {};
323 323
324 window.addEventListener("keyup", function(event) { 324 window.addEventListener("keyup", function(event) {
325 // JAWS dispatches extra Alt events and unless we handle them they move the 325 // JAWS dispatches extra Alt events and unless we handle them they move the
326 // focus and close the popup. 326 // focus and close the popup.
327 if (event.key === "Alt") 327 if (event.key === "Alt")
328 event.preventDefault(); 328 event.preventDefault();
329 }, true); 329 }, true);
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/resources/listPicker.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698