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

Side by Side Diff: Source/WebCore/platform/chromium/PopupContainer.cpp

Issue 10442063: Merge 118768 - [Chromium] [Regression] SELECT popup misplaced when there is not enough vertical spa… (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1132/
Patch Set: Created 8 years, 6 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 | « no previous file | 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 /* 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 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 } else { 178 } else {
179 // Figure whether upwards or downwards has more room and set the 179 // Figure whether upwards or downwards has more room and set the
180 // maximum number of items. 180 // maximum number of items.
181 int spaceAbove = widgetRectInScreen.y() - targetControlHeight; 181 int spaceAbove = widgetRectInScreen.y() - targetControlHeight;
182 int spaceBelow = screen.maxY() - widgetRectInScreen.y(); 182 int spaceBelow = screen.maxY() - widgetRectInScreen.y();
183 if (spaceAbove > spaceBelow) 183 if (spaceAbove > spaceBelow)
184 m_listBox->setMaxHeight(spaceAbove); 184 m_listBox->setMaxHeight(spaceAbove);
185 else 185 else
186 m_listBox->setMaxHeight(spaceBelow); 186 m_listBox->setMaxHeight(spaceBelow);
187 layoutAndGetRTLOffset(); 187 layoutAndGetRTLOffset();
188 // Our height has changed, so recompute only Y axis of widgetRec t. 188 // Container height may have changed in layoutAndGetRTLOffset(),
189 // We don't have to recompute X axis, so we only replace Y axis 189 // so set the WebWidget height to the container height.
190 // in widgetRect. 190 widgetRectInScreen.setHeight(height());
191 IntRect frameInScreen = chromeClient->rootViewToScreen(frameRect ()); 191 // Move WebWidget upwards if necessary.
192 widgetRectInScreen.setY(frameInScreen.y());
193 widgetRectInScreen.setHeight(frameInScreen.height());
194 // And move upwards if necessary.
195 if (spaceAbove > spaceBelow) 192 if (spaceAbove > spaceBelow)
196 widgetRectInScreen.move(0, -(widgetRectInScreen.height() + t argetControlHeight)); 193 widgetRectInScreen.move(0, -(widgetRectInScreen.height() + t argetControlHeight));
197 } 194 }
198 } 195 }
199 } 196 }
200 197
201 return widgetRectInScreen; 198 return widgetRectInScreen;
202 } 199 }
203 200
204 void PopupContainer::showPopup(FrameView* view) 201 void PopupContainer::showPopup(FrameView* view)
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 } 456 }
460 457
461 String PopupContainer::getSelectedItemToolTip() 458 String PopupContainer::getSelectedItemToolTip()
462 { 459 {
463 // We cannot use m_popupClient->selectedIndex() to choose tooltip message, 460 // We cannot use m_popupClient->selectedIndex() to choose tooltip message,
464 // because the selectedIndex() might return final selected index, not hoveri ng selection. 461 // because the selectedIndex() might return final selected index, not hoveri ng selection.
465 return listBox()->m_popupClient->itemToolTip(listBox()->m_selectedIndex); 462 return listBox()->m_popupClient->itemToolTip(listBox()->m_selectedIndex);
466 } 463 }
467 464
468 } // namespace WebCore 465 } // namespace WebCore
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698