diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-25 00:12:58 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-25 00:12:58 +0000 |
commit | c874da66d375909e04eb2a0aba669b162c41faba (patch) | |
tree | 292cfa9972b95d684ac63066c3faaa5e9b63349a /chrome | |
parent | 0faab517e5d541bc51d24be919e899991ed7356a (diff) | |
download | chromium_src-c874da66d375909e04eb2a0aba669b162c41faba.zip chromium_src-c874da66d375909e04eb2a0aba669b162c41faba.tar.gz chromium_src-c874da66d375909e04eb2a0aba669b162c41faba.tar.bz2 |
GTK: Show the correct text for the omnibox "paste and go/search" menu item.
BUG=20151
Review URL: http://codereview.chromium.org/174363
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24187 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc | 21 | ||||
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit_view_gtk.h | 11 |
2 files changed, 12 insertions, 20 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc index f303bf7..b017b62 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc +++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc @@ -777,6 +777,16 @@ void AutocompleteEditViewGtk::HandlePopulatePopup(GtkMenu* menu) { G_CALLBACK(HandleEditSearchEnginesThunk), this); gtk_widget_show(search_engine_menuitem); + // We need to update the paste and go controller before we know what text + // to show. We could do this all asynchronously, but it would be elaborate + // because we'd have to account for multiple menus showing, getting called + // back after shutdown, and similar issues. + GtkClipboard* x_clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); + gchar* text = gtk_clipboard_wait_for_text(x_clipboard); + std::wstring text_wstr = UTF8ToWide(text); + g_free(text); + bool can_paste_and_go = model_->CanPasteAndGo(text_wstr); + // Paste and Go menu item. GtkWidget* paste_go_menuitem = gtk_menu_item_new_with_mnemonic( gtk_util::ConvertAcceleratorsFromWindowsStyle( @@ -785,6 +795,7 @@ void AutocompleteEditViewGtk::HandlePopulatePopup(GtkMenu* menu) { gtk_menu_shell_append(GTK_MENU_SHELL(menu), paste_go_menuitem); g_signal_connect(paste_go_menuitem, "activate", G_CALLBACK(HandlePasteAndGoThunk), this); + gtk_widget_set_sensitive(paste_go_menuitem, can_paste_and_go); gtk_widget_show(paste_go_menuitem); } @@ -793,15 +804,7 @@ void AutocompleteEditViewGtk::HandleEditSearchEngines() { } void AutocompleteEditViewGtk::HandlePasteAndGo() { - GtkClipboard* x_clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); - gtk_clipboard_request_text(x_clipboard, HandlePasteAndGoReceivedTextThunk, - this); -} - -void AutocompleteEditViewGtk::HandlePasteAndGoReceivedText( - const std::wstring& text) { - if (model_->CanPasteAndGo(text)) - model_->PasteAndGo(); + model_->PasteAndGo(); } void AutocompleteEditViewGtk::HandleMarkSet(GtkTextBuffer* buffer, diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h index 322f053..a1c425b 100644 --- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h +++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h @@ -216,17 +216,6 @@ class AutocompleteEditViewGtk : public AutocompleteEditView, } void HandlePasteAndGo(); - static void HandlePasteAndGoReceivedTextThunk(GtkClipboard* clipboard, - const gchar* text, - gpointer self) { - // If there is nothing to paste (|text| is NULL), do nothing. - if (!text) - return; - reinterpret_cast<AutocompleteEditViewGtk*>(self)-> - HandlePasteAndGoReceivedText(UTF8ToWide(text)); - } - void HandlePasteAndGoReceivedText(const std::wstring& text); - static void HandleMarkSetThunk(GtkTextBuffer* buffer, GtkTextIter* location, GtkTextMark* mark, |