| Index: chrome/browser/ui/views/location_bar/location_bar_view.cc
|
| ===================================================================
|
| --- chrome/browser/ui/views/location_bar/location_bar_view.cc (revision 89890)
|
| +++ chrome/browser/ui/views/location_bar/location_bar_view.cc (working copy)
|
| @@ -35,6 +35,7 @@
|
| #include "chrome/browser/ui/views/location_bar/page_action_with_badge_view.h"
|
| #include "chrome/browser/ui/views/location_bar/selected_keyword_view.h"
|
| #include "chrome/browser/ui/views/location_bar/star_view.h"
|
| +#include "chrome/browser/ui/views/omnibox/omnibox_view_views.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "content/browser/renderer_host/render_widget_host_view.h"
|
| @@ -51,6 +52,7 @@
|
| #include "ui/gfx/color_utils.h"
|
| #include "ui/gfx/skia_util.h"
|
| #include "views/controls/label.h"
|
| +#include "views/controls/textfield/native_textfield_views.h"
|
| #include "views/drag_utils.h"
|
|
|
| #if defined(OS_WIN)
|
| @@ -171,9 +173,17 @@
|
| // URL edit field.
|
| // View container for URL edit field.
|
| #if defined(OS_WIN)
|
| - location_entry_.reset(new OmniboxViewWin(font_, this, model_, this,
|
| - GetWidget()->GetNativeView(), profile_, browser_->command_updater(),
|
| - mode_ == POPUP, this));
|
| + if (UseViewsOmnibox()) {
|
| + OmniboxViewViews* omnibox_view =
|
| + new OmniboxViewViews(this, model_, profile_,
|
| + browser_->command_updater(), mode_ == POPUP, this);
|
| + omnibox_view->Init();
|
| + location_entry_.reset(omnibox_view);
|
| + } else {
|
| + location_entry_.reset(new OmniboxViewWin(font_, this, model_, this,
|
| + GetWidget()->GetNativeView(), profile_, browser_->command_updater(),
|
| + mode_ == POPUP, this));
|
| + }
|
| #else
|
| location_entry_.reset(OmniboxViewGtk::Create(this, model_, profile_,
|
| browser_->command_updater(), mode_ == POPUP, this));
|
| @@ -421,7 +431,10 @@
|
| GetColor(ToolbarModel::NONE,
|
| LocationBarView::DEEMPHASIZED_TEXT));
|
| suggested_text_view_->SetText(UTF16ToWide(text));
|
| - suggested_text_view_->SetFont(location_entry_->GetFont());
|
| + if (UseViewsOmnibox())
|
| + NOTIMPLEMENTED();
|
| + else
|
| + suggested_text_view_->SetFont(GetOmniboxViewWin()->GetFont());
|
| AddChildView(suggested_text_view_);
|
| } else if (suggested_text_view_->GetText() != UTF16ToWide(text)) {
|
| suggested_text_view_->SetText(UTF16ToWide(text));
|
| @@ -533,12 +546,17 @@
|
| }
|
|
|
| #if defined(OS_WIN)
|
| - RECT formatting_rect;
|
| - location_entry_->GetRect(&formatting_rect);
|
| - RECT edit_bounds;
|
| - location_entry_->GetClientRect(&edit_bounds);
|
| - int max_edit_width = entry_width - formatting_rect.left -
|
| - (edit_bounds.right - formatting_rect.right);
|
| + int max_edit_width = entry_width;
|
| + if (UseViewsOmnibox()) {
|
| + NOTIMPLEMENTED();
|
| + } else {
|
| + RECT formatting_rect;
|
| + GetOmniboxViewWin()->GetRect(&formatting_rect);
|
| + RECT edit_bounds;
|
| + GetOmniboxViewWin()->GetClientRect(&edit_bounds);
|
| + max_edit_width = entry_width - formatting_rect.left -
|
| + (edit_bounds.right - formatting_rect.right);
|
| + }
|
| #else
|
| int max_edit_width = entry_width;
|
| #endif
|
| @@ -657,22 +675,27 @@
|
| // keyword hints and suggested text is minimal and we're not confident this
|
| // is the right approach for suggested text.
|
| if (suggested_text_view_) {
|
| - // TODO(sky): need to layout when the user changes caret position.
|
| - int suggested_text_width = suggested_text_view_->GetPreferredSize().width();
|
| - int vis_text_width = location_entry_->WidthOfTextAfterCursor();
|
| - if (vis_text_width + suggested_text_width > entry_width) {
|
| - // Hide the suggested text if the user has scrolled or we can't fit all
|
| - // the suggested text.
|
| - suggested_text_view_->SetBounds(0, 0, 0, 0);
|
| + if (UseViewsOmnibox()) {
|
| + NOTIMPLEMENTED();
|
| } else {
|
| - int location_needed_width = location_entry_->TextWidth();
|
| - location_bounds.set_width(std::min(location_needed_width,
|
| - entry_width - suggested_text_width));
|
| - // TODO(sky): figure out why this needs the -1.
|
| - suggested_text_view_->SetBounds(location_bounds.right() - 1,
|
| - location_bounds.y(),
|
| - suggested_text_width,
|
| - location_bounds.height());
|
| + // TODO(sky): need to layout when the user changes caret position.
|
| + int suggested_text_width =
|
| + suggested_text_view_->GetPreferredSize().width();
|
| + int vis_text_width = GetOmniboxViewWin()->WidthOfTextAfterCursor();
|
| + if (vis_text_width + suggested_text_width > entry_width) {
|
| + // Hide the suggested text if the user has scrolled or we can't fit all
|
| + // the suggested text.
|
| + suggested_text_view_->SetBounds(0, 0, 0, 0);
|
| + } else {
|
| + int location_needed_width = location_entry_->TextWidth();
|
| + location_bounds.set_width(std::min(location_needed_width,
|
| + entry_width - suggested_text_width));
|
| + // TODO(sky): figure out why this needs the -1.
|
| + suggested_text_view_->SetBounds(location_bounds.right() - 1,
|
| + location_bounds.y(),
|
| + suggested_text_width,
|
| + location_bounds.height());
|
| + }
|
| }
|
| }
|
| #endif
|
| @@ -778,7 +801,10 @@
|
| }
|
|
|
| void LocationBarView::OnMouseCaptureLost() {
|
| - location_entry_->HandleExternalMsg(WM_CAPTURECHANGED, 0, CPoint());
|
| + if (UseViewsOmnibox())
|
| + NOTIMPLEMENTED();
|
| + else
|
| + GetOmniboxViewWin()->HandleExternalMsg(WM_CAPTURECHANGED, 0, CPoint());
|
| }
|
| #endif
|
|
|
| @@ -971,7 +997,10 @@
|
| UINT flags = event.GetWindowsFlags();
|
| gfx::Point screen_point(event.location());
|
| ConvertPointToScreen(this, &screen_point);
|
| - location_entry_->HandleExternalMsg(msg, flags, screen_point.ToPOINT());
|
| + if (UseViewsOmnibox())
|
| + NOTIMPLEMENTED();
|
| + else
|
| + GetOmniboxViewWin()->HandleExternalMsg(msg, flags, screen_point.ToPOINT());
|
| }
|
| #endif
|
|
|
| @@ -1003,6 +1032,7 @@
|
| bool LocationBarView::SkipDefaultKeyEventProcessing(
|
| const views::KeyEvent& event) {
|
| #if defined(OS_WIN)
|
| + bool views_omnibox = UseViewsOmnibox();
|
| if (views::FocusManager::IsTabTraversalKeyEvent(event)) {
|
| if (HasValidSuggestText()) {
|
| // Return true so that the edit sees the tab and commits the suggestion.
|
| @@ -1014,7 +1044,7 @@
|
| }
|
|
|
| // If the caret is not at the end, then tab moves the caret to the end.
|
| - if (!location_entry_->IsCaretAtEnd())
|
| + if (!views_omnibox && !GetOmniboxViewWin()->IsCaretAtEnd())
|
| return true;
|
|
|
| // Tab while showing instant commits instant immediately.
|
| @@ -1024,7 +1054,10 @@
|
| return true;
|
| }
|
|
|
| - return location_entry_->SkipDefaultKeyEventProcessing(event);
|
| + if (!views_omnibox)
|
| + return GetOmniboxViewWin()->SkipDefaultKeyEventProcessing(event);
|
| + NOTIMPLEMENTED();
|
| + return false;
|
| #else
|
| // This method is not used for Linux ports. See FocusManager::OnKeyEvent() in
|
| // src/views/focus/focus_manager.cc for details.
|
| @@ -1221,4 +1254,14 @@
|
| return suggested_text_view_ && !suggested_text_view_->size().IsEmpty() &&
|
| !suggested_text_view_->GetText().empty();
|
| }
|
| +
|
| +OmniboxViewWin* LocationBarView::GetOmniboxViewWin() {
|
| + CHECK(UseViewsOmnibox());
|
| + return static_cast<OmniboxViewWin*>(location_entry_.get());
|
| +}
|
| +
|
| +bool LocationBarView::UseViewsOmnibox() {
|
| + return views::Widget::IsPureViews() ||
|
| + views::NativeTextfieldViews::IsTextfieldViewsEnabled();
|
| +}
|
| #endif
|
|
|