Index: chrome/browser/ui/views/omnibox/omnibox_view_win.cc |
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_win.cc b/chrome/browser/ui/views/omnibox/omnibox_view_win.cc |
index d620d9ee9b3a1e038b8a06b9d8433b7e712a5fa3..d83024a2c5c4546cd3e4a8fa7e2f9cda833c8b4d 100644 |
--- a/chrome/browser/ui/views/omnibox/omnibox_view_win.cc |
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_win.cc |
@@ -1015,6 +1015,23 @@ int OmniboxViewWin::OnPerformDropImpl(const ui::DropTargetEvent& event, |
return ui::DragDropTypes::DRAG_NONE; |
} |
+bool OmniboxViewWin::ShouldAddCopyURL() const { |
Peter Kasting
2012/09/05 22:32:58
Nit: I'm fine with inlining this into IsCommandIdE
dominich
2012/09/05 23:35:34
Done.
|
+ return !!CanCopy() && |
+ !model()->user_input_in_progress() && |
+ toolbar_model()->WouldReplaceSearchURLWithSearchTerms(); |
+} |
+ |
+void OmniboxViewWin::CopyURL() { |
+ const string16& text = toolbar_model()->GetText(false); |
+ const GURL& url = toolbar_model()->GetURL(); |
+ |
+ ui::ScopedClipboardWriter scw(g_browser_process->clipboard(), |
+ ui::Clipboard::BUFFER_STANDARD); |
+ scw.WriteText(text); |
+ scw.WriteBookmark(text, url.spec()); |
+ scw.WriteHyperlink(net::EscapeForHTML(text), url.spec()); |
Peter Kasting
2012/09/05 22:32:58
Don't call WriteHyperlink (see https://chromiumcod
dominich
2012/09/05 23:35:34
Done.
|
+} |
+ |
bool OmniboxViewWin::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) { |
ui::KeyboardCode key = event.key_code(); |
// We don't process ALT + numpad digit as accelerators, they are used for |
@@ -1084,6 +1101,7 @@ bool OmniboxViewWin::IsCommandIdEnabled(int command_id) const { |
case IDS_UNDO: return !!CanUndo(); |
case IDC_CUT: return !!CanCut(); |
case IDC_COPY: return !!CanCopy(); |
+ case IDC_COPY_URL: return ShouldAddCopyURL(); |
case IDC_PASTE: return !!CanPaste(); |
case IDS_PASTE_AND_GO: return model()->CanPasteAndGo(GetClipboardText()); |
case IDS_SELECT_ALL: return !!CanSelectAll(); |
@@ -1137,6 +1155,10 @@ void OmniboxViewWin::ExecuteCommand(int command_id) { |
Copy(); |
break; |
+ case IDC_COPY_URL: |
+ CopyURL(); |
+ break; |
+ |
case IDC_PASTE: |
Paste(); |
break; |