Index: chrome/browser/views/autocomplete/autocomplete_popup_contents_view.cc |
=================================================================== |
--- chrome/browser/views/autocomplete/autocomplete_popup_contents_view.cc (revision 26251) |
+++ chrome/browser/views/autocomplete/autocomplete_popup_contents_view.cc (working copy) |
@@ -14,6 +14,7 @@ |
#include "base/compiler_specific.h" |
#include "chrome/browser/autocomplete/autocomplete_edit_view.h" |
#include "chrome/browser/autocomplete/autocomplete_popup_model.h" |
+#include "chrome/browser/bubble_positioner.h" |
#include "chrome/browser/views/bubble_border.h" |
#include "grit/generated_resources.h" |
#include "grit/theme_resources.h" |
@@ -582,7 +583,7 @@ |
AutocompleteEditView* edit_view, |
AutocompleteEditModel* edit_model, |
Profile* profile, |
- AutocompletePopupPositioner* popup_positioner) |
+ const BubblePositioner* bubble_positioner) |
#if defined(OS_WIN) |
: popup_(new AutocompletePopupWin(this)), |
#else |
@@ -590,10 +591,14 @@ |
#endif |
model_(new AutocompletePopupModel(this, edit_model, profile)), |
edit_view_(edit_view), |
- popup_positioner_(popup_positioner), |
+ bubble_positioner_(bubble_positioner), |
result_font_(font.DeriveFont(kEditFontAdjust)), |
ALLOW_THIS_IN_INITIALIZER_LIST(size_animation_(this)) { |
- set_border(new BubbleBorder); |
+ // The following little dance is required because set_border() requires a |
+ // pointer to a non-const object. |
+ BubbleBorder* bubble_border = new BubbleBorder; |
+ bubble_border_ = bubble_border; |
+ set_border(bubble_border); |
} |
gfx::Rect AutocompletePopupContentsView::GetPopupBounds() const { |
@@ -650,12 +655,10 @@ |
} |
// Calculate desired bounds. |
- gfx::Rect new_target_bounds = popup_positioner_->GetPopupBounds(); |
- new_target_bounds.set_height(total_child_height); |
- gfx::Insets insets; |
- border()->GetInsets(&insets); |
- new_target_bounds.Inset(-insets.left(), -insets.top(), -insets.right(), |
- -insets.bottom()); |
+ gfx::Rect location_stack_bounds = |
+ bubble_positioner_->GetLocationStackBounds(); |
+ gfx::Rect new_target_bounds(bubble_border_->GetBounds(location_stack_bounds, |
+ gfx::Size(location_stack_bounds.width(), total_child_height))); |
// If we're animating and our target height changes, reset the animation. |
// NOTE: If we just reset blindly on _every_ update, then when the user types |
@@ -870,7 +873,7 @@ |
AutocompleteEditView* edit_view, |
AutocompleteEditModel* edit_model, |
Profile* profile, |
- AutocompletePopupPositioner* popup_positioner) { |
+ const BubblePositioner* bubble_positioner) { |
return new AutocompletePopupContentsView(font, edit_view, edit_model, |
- profile, popup_positioner); |
+ profile, bubble_positioner); |
} |