summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-25 00:12:58 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-25 00:12:58 +0000
commitc874da66d375909e04eb2a0aba669b162c41faba (patch)
tree292cfa9972b95d684ac63066c3faaa5e9b63349a /chrome
parent0faab517e5d541bc51d24be919e899991ed7356a (diff)
downloadchromium_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.cc21
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_gtk.h11
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,