diff options
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view.h | 4 | ||||
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc | 6 | ||||
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_gtk.h | 1 | ||||
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_mac.h | 1 | ||||
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_mac.mm | 6 | ||||
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_win.cc | 6 | ||||
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_win.h | 1 | ||||
-rw-r--r-- | chrome/browser/cocoa/autocomplete_text_field_unittest.mm | 8 | ||||
-rw-r--r-- | chrome/browser/cocoa/location_bar_view_mac.h | 3 | ||||
-rw-r--r-- | chrome/browser/cocoa/location_bar_view_mac.mm | 14 | ||||
-rw-r--r-- | chrome/browser/gtk/location_bar_view_gtk.cc | 5 | ||||
-rw-r--r-- | chrome/browser/gtk/location_bar_view_gtk.h | 3 | ||||
-rw-r--r-- | chrome/browser/location_bar.h | 1 | ||||
-rw-r--r-- | chrome/browser/views/location_bar_view.cc | 9 | ||||
-rw-r--r-- | chrome/browser/views/location_bar_view.h | 3 | ||||
-rw-r--r-- | chrome/test/test_location_bar.h | 3 |
16 files changed, 63 insertions, 11 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view.h b/chrome/browser/autocomplete/autocomplete_edit_view.h index e29b19b..0d4c230 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view.h @@ -59,6 +59,10 @@ class AutocompleteEditView { // browser, or just whatever the user has currently typed. virtual std::wstring GetText() const = 0; + // |true| if the user is in the process of editing the field, or if + // the field is empty. + virtual bool IsEditingOrEmpty() const = 0; + // Returns the resource ID of the icon to show for the current text. virtual int GetIcon() const = 0; diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc index 35144963..207dd0d 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc +++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc @@ -387,8 +387,12 @@ std::wstring AutocompleteEditViewGtk::GetText() const { return out; } +bool AutocompleteEditViewGtk::IsEditingOrEmpty() const { + return (model_->user_input_in_progress() || model_->show_search_hint()); +} + int AutocompleteEditViewGtk::GetIcon() const { - return (model_->user_input_in_progress() || model_->show_search_hint()) ? + return IsEditingOrEmpty() ? AutocompleteMatch::TypeToIcon(model_->CurrentTextType()) : toolbar_model_->GetIcon(); } diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h index 978f3d7..69bc3be 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h @@ -80,6 +80,7 @@ class AutocompleteEditViewGtk : public AutocompleteEditView, virtual std::wstring GetText() const; + virtual bool IsEditingOrEmpty() const; virtual int GetIcon() const; virtual void SetUserText(const std::wstring& text) { diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h index 8539cae..a810465 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.h @@ -49,6 +49,7 @@ class AutocompleteEditViewMac : public AutocompleteEditView, virtual std::wstring GetText() const; + virtual bool IsEditingOrEmpty() const; virtual int GetIcon() const; virtual void SetUserText(const std::wstring& text) { diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm index fc5bbef..ee502cb 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm +++ b/chrome/browser/autocomplete/autocomplete_edit_view_mac.mm @@ -266,8 +266,12 @@ std::wstring AutocompleteEditViewMac::GetText() const { return base::SysNSStringToWide([field_ stringValue]); } +bool AutocompleteEditViewMac::IsEditingOrEmpty() const { + return (model_->user_input_in_progress() || model_->show_search_hint()); +} + int AutocompleteEditViewMac::GetIcon() const { - return (model_->user_input_in_progress() || model_->show_search_hint()) ? + return IsEditingOrEmpty() ? AutocompleteMatch::TypeToIcon(model_->CurrentTextType()) : toolbar_model_->GetIcon(); } diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc index 87c41f9..46639ab 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_win.cc +++ b/chrome/browser/autocomplete/autocomplete_edit_view_win.cc @@ -599,8 +599,12 @@ std::wstring AutocompleteEditViewWin::GetText() const { return str; } +bool AutocompleteEditViewWin::IsEditingOrEmpty() const { + return (model_->user_input_in_progress() || model_->show_search_hint()); +} + int AutocompleteEditViewWin::GetIcon() const { - return (model_->user_input_in_progress() || model_->show_search_hint()) ? + return IsEditingOrEmpty() ? AutocompleteMatch::TypeToIcon(model_->CurrentTextType()) : toolbar_model_->GetIcon(); } diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_win.h b/chrome/browser/autocomplete/autocomplete_edit_view_win.h index 718ba2a..82762ae 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_win.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view_win.h @@ -91,6 +91,7 @@ class AutocompleteEditViewWin virtual std::wstring GetText() const; + virtual bool IsEditingOrEmpty() const; virtual int GetIcon() const; virtual void SetUserText(const std::wstring& text) { diff --git a/chrome/browser/cocoa/autocomplete_text_field_unittest.mm b/chrome/browser/cocoa/autocomplete_text_field_unittest.mm index f82fca7..b6f044f 100644 --- a/chrome/browser/cocoa/autocomplete_text_field_unittest.mm +++ b/chrome/browser/cocoa/autocomplete_text_field_unittest.mm @@ -27,9 +27,11 @@ class MockLocationIconView : public LocationBarViewMac::LocationIconView { MockLocationIconView(LocationBarViewMac* owner) : LocationBarViewMac::LocationIconView(owner) {} - // |LocationBarViewMac::LocationIconView::GetDragPasteboard()| - // expects things to be more initialized than they will be, and - // will crash if it is called. + // |LocationBarViewMac::LocationIconView| dragging support needs + // more setup than this test provides. + bool IsDraggable() { + return false; + } virtual NSPasteboard* GetDragPasteboard() { return [NSPasteboard pasteboardWithUniqueName]; } diff --git a/chrome/browser/cocoa/location_bar_view_mac.h b/chrome/browser/cocoa/location_bar_view_mac.h index 7eee821..ebff104 100644 --- a/chrome/browser/cocoa/location_bar_view_mac.h +++ b/chrome/browser/cocoa/location_bar_view_mac.h @@ -61,6 +61,9 @@ class LocationBarViewMac : public AutocompleteEditController, virtual void InvalidatePageActions(); virtual void SaveStateToContents(TabContents* contents); virtual void Revert(); + virtual const AutocompleteEditView* location_entry() const { + return edit_view_.get(); + } virtual AutocompleteEditView* location_entry() { return edit_view_.get(); } diff --git a/chrome/browser/cocoa/location_bar_view_mac.mm b/chrome/browser/cocoa/location_bar_view_mac.mm index c2c10dd..6a7afba 100644 --- a/chrome/browser/cocoa/location_bar_view_mac.mm +++ b/chrome/browser/cocoa/location_bar_view_mac.mm @@ -601,8 +601,11 @@ LocationBarViewMac::LocationIconView::LocationIconView( LocationBarViewMac::LocationIconView::~LocationIconView() {} void LocationBarViewMac::LocationIconView::OnMousePressed(NSRect bounds) { - // TODO(shess): Only allow click if page-info makes sense. - // http://codereview.chromium.org/1594012 + // Do not show page info if the user has been editing the location + // bar, or the location bar is at the NTP. + if (owner_->location_entry()->IsEditingOrEmpty()) + return; + TabContents* tab = owner_->GetTabContents(); NavigationEntry* nav_entry = tab->controller().GetActiveEntry(); if (!nav_entry) { @@ -613,8 +616,11 @@ void LocationBarViewMac::LocationIconView::OnMousePressed(NSRect bounds) { } bool LocationBarViewMac::LocationIconView::IsDraggable() { - // TODO(shess): Only allow drag if there's an URL to drag. - // http://codereview.chromium.org/1594012 + // Do not drag if the user has been editing the location bar, or the + // location bar is at the NTP. + if (owner_->location_entry()->IsEditingOrEmpty()) + return false; + return true; } diff --git a/chrome/browser/gtk/location_bar_view_gtk.cc b/chrome/browser/gtk/location_bar_view_gtk.cc index 5c6ed91..733dade 100644 --- a/chrome/browser/gtk/location_bar_view_gtk.cc +++ b/chrome/browser/gtk/location_bar_view_gtk.cc @@ -890,6 +890,11 @@ void LocationBarViewGtk::ShowFirstRunBubbleInternal(bool use_OEM_bubble) { gboolean LocationBarViewGtk::OnIconReleased(GtkWidget* sender, GdkEventButton* event) { + // Do not show page info if the user has been editing the location + // bar, or the location bar is at the NTP. + if (location_entry()->IsEditingOrEmpty()) + return false; + // (0,0) event coordinates indicates that the release came at the end of // a drag. if (event->button != 1 || (event->x == 0 && event->y == 0)) diff --git a/chrome/browser/gtk/location_bar_view_gtk.h b/chrome/browser/gtk/location_bar_view_gtk.h index adb47b0..aac1ad1 100644 --- a/chrome/browser/gtk/location_bar_view_gtk.h +++ b/chrome/browser/gtk/location_bar_view_gtk.h @@ -110,6 +110,9 @@ class LocationBarViewGtk : public AutocompleteEditController, virtual void InvalidatePageActions(); virtual void SaveStateToContents(TabContents* contents); virtual void Revert(); + virtual const AutocompleteEditView* location_entry() const { + return location_entry_.get(); + } virtual AutocompleteEditView* location_entry() { return location_entry_.get(); } diff --git a/chrome/browser/location_bar.h b/chrome/browser/location_bar.h index 29bfddc..a0afe93 100644 --- a/chrome/browser/location_bar.h +++ b/chrome/browser/location_bar.h @@ -68,6 +68,7 @@ class LocationBar { virtual void Revert() = 0; // Returns a pointer to the text entry view. + virtual const AutocompleteEditView* location_entry() const = 0; virtual AutocompleteEditView* location_entry() = 0; // Returns a pointer to the testing interface. diff --git a/chrome/browser/views/location_bar_view.cc b/chrome/browser/views/location_bar_view.cc index 35b8f8e..324731f 100644 --- a/chrome/browser/views/location_bar_view.cc +++ b/chrome/browser/views/location_bar_view.cc @@ -895,7 +895,8 @@ int LocationBarView::GetDragOperations(views::View* sender, const gfx::Point& p) { DCHECK(sender == &location_icon_view_); TabContents* tab_contents = delegate_->GetTabContents(); - return (tab_contents && tab_contents->GetURL().is_valid()) ? + return (tab_contents && tab_contents->GetURL().is_valid() && + !location_entry()->IsEditingOrEmpty()) ? (DragDropTypes::DRAG_COPY | DragDropTypes::DRAG_LINK) : DragDropTypes::DRAG_NONE; } @@ -928,6 +929,12 @@ void LocationBarView::LocationIconView::OnMouseReleased( bool canceled) { if (canceled || !HitTest(event.location())) return; + + // Do not show page info if the user has been editing the location + // bar, or the location bar is at the NTP. + if (parent_->location_entry()->IsEditingOrEmpty()) + return; + TabContents* tab = parent_->GetTabContents(); NavigationEntry* nav_entry = tab->controller().GetActiveEntry(); if (!nav_entry) { diff --git a/chrome/browser/views/location_bar_view.h b/chrome/browser/views/location_bar_view.h index 306a490..dee0ee2 100644 --- a/chrome/browser/views/location_bar_view.h +++ b/chrome/browser/views/location_bar_view.h @@ -185,6 +185,9 @@ class LocationBarView : public LocationBar, virtual void InvalidatePageActions(); virtual void SaveStateToContents(TabContents* contents); virtual void Revert(); + virtual const AutocompleteEditView* location_entry() const { + return location_entry_.get(); + } virtual AutocompleteEditView* location_entry() { return location_entry_.get(); } diff --git a/chrome/test/test_location_bar.h b/chrome/test/test_location_bar.h index f257d1ee..131af32 100644 --- a/chrome/test/test_location_bar.h +++ b/chrome/test/test_location_bar.h @@ -42,6 +42,9 @@ class TestLocationBar : public LocationBar { virtual void InvalidatePageActions() {} virtual void SaveStateToContents(TabContents* contents) {} virtual void Revert() {} + virtual const AutocompleteEditView* location_entry() const { + return NULL; + } virtual AutocompleteEditView* location_entry() { return NULL; } |