summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/app_launcher.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/app_launcher.cc')
-rw-r--r--chrome/browser/views/app_launcher.cc42
1 files changed, 21 insertions, 21 deletions
diff --git a/chrome/browser/views/app_launcher.cc b/chrome/browser/views/app_launcher.cc
index fd55086..35c8b07 100644
--- a/chrome/browser/views/app_launcher.cc
+++ b/chrome/browser/views/app_launcher.cc
@@ -16,7 +16,6 @@
#include "chrome/browser/autocomplete/autocomplete_edit_view.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_window.h"
-#include "chrome/browser/bubble_positioner.h"
#include "chrome/browser/in_process_webkit/webkit_context.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/render_view_host.h"
@@ -54,8 +53,9 @@ const int kNavigationEntryYMargin = 1;
// Padding between the navigation bar and the render view contents.
const int kNavigationBarBottomPadding = 3;
-// NavigationBar size.
+// NavigationBar constants.
const int kNavigationBarHeight = 25;
+const int kNavigationBarBorderThickness = 1;
// The delta applied to the default font size for the omnibox.
const int kAutocompleteEditFontDelta = 3;
@@ -147,8 +147,7 @@ void TabContentsDelegateImpl::OpenURLFromTab(TabContents* source,
// mode.
class NavigationBar : public views::View,
- public AutocompleteEditController,
- public BubblePositioner {
+ public AutocompleteEditController {
public:
explicit NavigationBar(AppLauncher* app_launcher)
: app_launcher_(app_launcher),
@@ -156,7 +155,12 @@ class NavigationBar : public views::View,
SetFocusable(true);
location_entry_view_ = new views::NativeViewHost;
AddChildView(location_entry_view_);
- set_border(views::Border::CreateSolidBorder(1, SK_ColorGRAY));
+ set_border(views::Border::CreateSolidBorder(kNavigationBarBorderThickness,
+ SK_ColorGRAY));
+
+ AddChildView(&popup_positioning_view_);
+ popup_positioning_view_.SetVisible(false);
+ popup_positioning_view_.set_parent_owned(false);
}
virtual ~NavigationBar() {
@@ -186,7 +190,8 @@ class NavigationBar : public views::View,
new AutocompleteEditViewWin(font, this, browser->toolbar_model(),
this, GetWidget()->GetNativeView(),
browser->profile(),
- browser->command_updater(), false, this);
+ browser->command_updater(), false,
+ &popup_positioning_view_);
location_entry_.reset(autocomplete_view);
autocomplete_view->Update(NULL);
// The Update call above sets the autocomplete text to the current one in
@@ -196,7 +201,8 @@ class NavigationBar : public views::View,
AutocompleteEditViewGtk* autocomplete_view =
new AutocompleteEditViewGtk(this, browser->toolbar_model(),
browser->profile(),
- browser->command_updater(), false, this);
+ browser->command_updater(), false,
+ &popup_positioning_view_);
autocomplete_view->Init();
gtk_widget_show_all(autocomplete_view->GetNativeView());
gtk_widget_hide(autocomplete_view->GetNativeView());
@@ -216,21 +222,10 @@ class NavigationBar : public views::View,
bounds.width() - 2 * (kNavigationEntryPadding +
kNavigationEntryXMargin),
bounds.height() - kNavigationEntryYMargin * 2);
- }
- // BubblePositioner implementation.
- virtual gfx::Rect GetLocationStackBounds() const {
- gfx::Rect bounds = location_entry_view_->GetBounds(
- views::View::APPLY_MIRRORING_TRANSFORMATION);
- gfx::Point origin(bounds.x(), bounds.bottom() + kNavigationEntryPadding);
- views::View::ConvertPointToScreen(this, &origin);
- gfx::Rect rect = gfx::Rect(origin, gfx::Size(500, 0));
- if (UILayoutIsRightToLeft()) {
- // Align the window to the right side of the entry view when
- // UI is RTL mode.
- rect.set_x(rect.x() - (rect.width() - location_entry_view_->width()));
- }
- return rect;
+ gfx::Rect popup_positioning_bounds(bounds);
+ popup_positioning_bounds.Inset(0, -(kNavigationBarBorderThickness + 1));
+ popup_positioning_view_.SetBounds(popup_positioning_bounds);
}
// AutocompleteController implementation.
@@ -270,6 +265,11 @@ class NavigationBar : public views::View,
NOTIMPLEMENTED();
#endif
+ // This invisible view is provided to the popup in place of |this|, so the
+ // popup can size itself against it using the same offsets it does with the
+ // LocationBarView.
+ views::View popup_positioning_view_;
+
DISALLOW_COPY_AND_ASSIGN(NavigationBar);
};