OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2011, Google Inc. All rights reserved. | 2 * Copyright (c) 2011, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 // points. If the <select>/<input> is transformed, they are not the same. | 193 // points. If the <select>/<input> is transformed, they are not the same. |
194 int verticalOffset = - m_controlPosition.p4().y() + m_controlPosition.p3().y
(); | 194 int verticalOffset = - m_controlPosition.p4().y() + m_controlPosition.p3().y
(); |
195 int verticalForRTLOffset = isRTL ? verticalOffset : 0; | 195 int verticalForRTLOffset = isRTL ? verticalOffset : 0; |
196 | 196 |
197 // Assume m_listBox size is already calculated. | 197 // Assume m_listBox size is already calculated. |
198 IntSize targetSize(m_listBox->width() + borderSize * 2, m_listBox->height()
+ borderSize * 2); | 198 IntSize targetSize(m_listBox->width() + borderSize * 2, m_listBox->height()
+ borderSize * 2); |
199 | 199 |
200 IntRect widgetRectInScreen; | 200 IntRect widgetRectInScreen; |
201 // If the popup would extend past the bottom of the screen, open upwards | 201 // If the popup would extend past the bottom of the screen, open upwards |
202 // instead. | 202 // instead. |
203 IntRect screen = screenAvailableRect(m_frameView.get()); | 203 IntRect screen = m_frameView->root()->hostWindow() ? screenAvailableRect(*m
_frameView->root()->hostWindow()) : IntRect(); |
204 // Use popupInitialCoordinate.x() + rightOffset because RTL position | 204 // Use popupInitialCoordinate.x() + rightOffset because RTL position |
205 // needs to be considered. | 205 // needs to be considered. |
206 float pageScaleFactor = m_frameView->frame().page()->pageScaleFactor(); | 206 float pageScaleFactor = m_frameView->frame().page()->pageScaleFactor(); |
207 int popupX = round((popupInitialCoordinate.x() + rightOffset) * pageScaleFac
tor); | 207 int popupX = round((popupInitialCoordinate.x() + rightOffset) * pageScaleFac
tor); |
208 int popupY = round((popupInitialCoordinate.y() + verticalForRTLOffset) * pag
eScaleFactor); | 208 int popupY = round((popupInitialCoordinate.y() + verticalForRTLOffset) * pag
eScaleFactor); |
209 widgetRectInScreen = chromeClient().viewportToScreen(IntRect(popupX, popupY,
targetSize.width(), targetSize.height())); | 209 widgetRectInScreen = chromeClient().viewportToScreen(IntRect(popupX, popupY,
targetSize.width(), targetSize.height())); |
210 | 210 |
211 // If we have multiple screens and the browser rect is in one screen, we | 211 // If we have multiple screens and the browser rect is in one screen, we |
212 // have to clip the window width to the screen width. | 212 // have to clip the window width to the screen width. |
213 // When clipping, we also need to set a maximum width for the list box. | 213 // When clipping, we also need to set a maximum width for the list box. |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 } | 493 } |
494 | 494 |
495 IntPoint PopupContainer::convertSelfToChild(const Widget* child, const IntPoint&
point) const | 495 IntPoint PopupContainer::convertSelfToChild(const Widget* child, const IntPoint&
point) const |
496 { | 496 { |
497 IntPoint newPoint = point; | 497 IntPoint newPoint = point; |
498 newPoint.moveBy(-child->location()); | 498 newPoint.moveBy(-child->location()); |
499 return newPoint; | 499 return newPoint; |
500 } | 500 } |
501 | 501 |
502 } // namespace blink | 502 } // namespace blink |
OLD | NEW |