summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autocomplete
diff options
context:
space:
mode:
authorrohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-14 15:09:51 +0000
committerrohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-14 15:09:51 +0000
commit6af4014c7c0af5efc058aa9789c9d302c2f7873a (patch)
treed71c355805e37fd01a6fdd75b5aff7c2954fa781 /chrome/browser/autocomplete
parent11540af83d79c15475afadf8fc98822e3c3ca2c8 (diff)
downloadchromium_src-6af4014c7c0af5efc058aa9789c9d302c2f7873a.zip
chromium_src-6af4014c7c0af5efc058aa9789c9d302c2f7873a.tar.gz
chromium_src-6af4014c7c0af5efc058aa9789c9d302c2f7873a.tar.bz2
[Mac] Plumb through the Instant and omnibox popup bounds. This will allow instant results to properly move out of the way of the omnibox.
BUG=56385 TEST=Do a Google search with Instant turned on. The omnibox should not overlap with the results. Review URL: http://codereview.chromium.org/3735005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62550 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autocomplete')
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_mac.mm1
-rw-r--r--chrome/browser/autocomplete/autocomplete_popup_model.cc5
-rw-r--r--chrome/browser/autocomplete/autocomplete_popup_view.h6
-rw-r--r--chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc6
-rw-r--r--chrome/browser/autocomplete/autocomplete_popup_view_gtk.h1
-rw-r--r--chrome/browser/autocomplete/autocomplete_popup_view_mac.h2
-rw-r--r--chrome/browser/autocomplete/autocomplete_popup_view_mac.mm12
7 files changed, 25 insertions, 8 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
index 46bab39..e313040 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm
@@ -858,6 +858,7 @@ void AutocompleteEditViewMac::OnFrameChanged() {
// things even cheaper by refactoring between the popup-placement
// code and the matrix-population code.
popup_view_->UpdatePopupAppearance();
+ model_->PopupBoundsChangedTo(popup_view_->GetTargetBounds());
// Give controller a chance to rearrange decorations.
controller_->OnChanged();
diff --git a/chrome/browser/autocomplete/autocomplete_popup_model.cc b/chrome/browser/autocomplete/autocomplete_popup_model.cc
index 7456ccd..a92d0d8 100644
--- a/chrome/browser/autocomplete/autocomplete_popup_model.cc
+++ b/chrome/browser/autocomplete/autocomplete_popup_model.cc
@@ -292,12 +292,7 @@ void AutocompletePopupModel::Observe(NotificationType type,
SetHoveredLine(kNoMatch);
view_->UpdatePopupAppearance();
-
-#if defined(TOOLKIT_VIEWS)
edit_model_->PopupBoundsChangedTo(view_->GetTargetBounds());
-#else
- // TODO: port
-#endif
}
const SkBitmap* AutocompletePopupModel::GetSpecialIconForMatch(
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view.h b/chrome/browser/autocomplete/autocomplete_popup_view.h
index 279d63d..71f6c8d 100644
--- a/chrome/browser/autocomplete/autocomplete_popup_view.h
+++ b/chrome/browser/autocomplete/autocomplete_popup_view.h
@@ -14,6 +14,10 @@
#include "build/build_config.h"
+namespace gfx {
+class Rect;
+}
+
class AutocompletePopupModel;
class AutocompletePopupView {
@@ -30,12 +34,10 @@ class AutocompletePopupView {
// mean opening or closing the window.
virtual void UpdatePopupAppearance() = 0;
-#if defined(TOOLKIT_VIEWS)
// Returns the target bounds for the popup. This returns the popup's current
// bounds when not animating, or the desired target bounds when animating.
// The return value is in screen coordinates.
virtual gfx::Rect GetTargetBounds() = 0;
-#endif
// Paint any pending updates.
virtual void PaintUpdatesNow() = 0;
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc b/chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc
index 5bb4f90..056b847 100644
--- a/chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc
+++ b/chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc
@@ -355,6 +355,12 @@ void AutocompletePopupViewGtk::UpdatePopupAppearance() {
gtk_widget_queue_draw(window_);
}
+gfx::Rect AutocompletePopupViewGtk::GetTargetBounds() {
+ NOTIMPLEMENTED();
+ return gfx::Rect();
+}
+
+
void AutocompletePopupViewGtk::PaintUpdatesNow() {
// Paint our queued invalidations now, synchronously.
gdk_window_process_updates(window_->window, FALSE);
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view_gtk.h b/chrome/browser/autocomplete/autocomplete_popup_view_gtk.h
index 53adbc2..7684c37 100644
--- a/chrome/browser/autocomplete/autocomplete_popup_view_gtk.h
+++ b/chrome/browser/autocomplete/autocomplete_popup_view_gtk.h
@@ -37,6 +37,7 @@ class AutocompletePopupViewGtk : public AutocompletePopupView,
virtual bool IsOpen() const { return opened_; }
virtual void InvalidateLine(size_t line);
virtual void UpdatePopupAppearance();
+ virtual gfx::Rect GetTargetBounds();
virtual void PaintUpdatesNow();
virtual void OnDragCanceled();
virtual AutocompletePopupModel* GetModel();
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view_mac.h b/chrome/browser/autocomplete/autocomplete_popup_view_mac.h
index e0a27d5..8e2de8c 100644
--- a/chrome/browser/autocomplete/autocomplete_popup_view_mac.h
+++ b/chrome/browser/autocomplete/autocomplete_popup_view_mac.h
@@ -62,6 +62,8 @@ class AutocompletePopupViewMac : public AutocompletePopupView {
}
virtual void UpdatePopupAppearance();
+ virtual gfx::Rect GetTargetBounds();
+
// Set |line| to be selected.
void SetSelectedLine(size_t line);
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view_mac.mm b/chrome/browser/autocomplete/autocomplete_popup_view_mac.mm
index c1efe82..a6c7bb7 100644
--- a/chrome/browser/autocomplete/autocomplete_popup_view_mac.mm
+++ b/chrome/browser/autocomplete/autocomplete_popup_view_mac.mm
@@ -260,7 +260,8 @@ AutocompletePopupViewMac::AutocompletePopupViewMac(
: model_(new AutocompletePopupModel(this, edit_model, profile)),
edit_view_(edit_view),
field_(field),
- popup_(nil) {
+ popup_(nil),
+ targetPopupFrame_(NSZeroRect) {
DCHECK(edit_view);
DCHECK(edit_model);
DCHECK(profile);
@@ -448,6 +449,15 @@ void AutocompletePopupViewMac::UpdatePopupAppearance() {
PositionPopup(rows * cellHeight);
}
+gfx::Rect AutocompletePopupViewMac::GetTargetBounds() {
+ // Flip the coordinate system before returning.
+ NSScreen* screen = [[NSScreen screens] objectAtIndex:0];
+ NSRect monitorFrame = [screen frame];
+ gfx::Rect bounds(NSRectToCGRect(targetPopupFrame_));
+ bounds.set_y(monitorFrame.size.height - bounds.y() - bounds.height());
+ return bounds;
+}
+
void AutocompletePopupViewMac::SetSelectedLine(size_t line) {
model_->SetSelectedLine(line, false);
}