diff options
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_view.cc | 17 | ||||
-rw-r--r-- | chrome/renderer/render_view.h | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index af8ddbf..1da9696 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -356,6 +356,7 @@ void RenderView::OnMessageReceived(const IPC::Message& message) { IPC_MESSAGE_HANDLER(ViewMsg_Redo, OnRedo) IPC_MESSAGE_HANDLER(ViewMsg_Cut, OnCut) IPC_MESSAGE_HANDLER(ViewMsg_Copy, OnCopy) + IPC_MESSAGE_HANDLER(ViewMsg_CopyToFindPboard, OnCopyToFindPboard) IPC_MESSAGE_HANDLER(ViewMsg_Paste, OnPaste) IPC_MESSAGE_HANDLER(ViewMsg_Replace, OnReplace) IPC_MESSAGE_HANDLER(ViewMsg_ToggleSpellPanel, OnToggleSpellPanel) @@ -830,6 +831,22 @@ void RenderView::OnCopy() { UserMetricsRecordAction(L"Copy"); } +void RenderView::OnCopyToFindPboard() { + if (!webview()) + return; + + // Since the find pasteboard supports only plain text, this can be simpler + // than the |OnCopy()| case. + WebFrame* frame = webview()->GetFocusedFrame(); + if (frame->hasSelection()) { + string16 selection = frame->selectionAsText(); + RenderThread::current()->Send( + new ViewHostMsg_ClipboardFindPboardWriteStringAsync(selection)); + } + + UserMetricsRecordAction(L"CopyToFindPboard"); +} + void RenderView::OnPaste() { if (!webview()) return; diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h index cac8ca8..4f9bc89 100644 --- a/chrome/renderer/render_view.h +++ b/chrome/renderer/render_view.h @@ -535,6 +535,7 @@ class RenderView : public RenderWidget, void OnRedo(); void OnCut(); void OnCopy(); + void OnCopyToFindPboard(); void OnPaste(); void OnReplace(const std::wstring& text); void OnAdvanceToNextMisspelling(); |