diff options
author | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-24 17:49:42 +0000 |
---|---|---|
committer | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-24 17:49:42 +0000 |
commit | 0387ae933d009e37f5fcba94544f356b45e617c1 (patch) | |
tree | 4c97940bd99713157481d6e1c3d1f269c5a0cd67 | |
parent | c145cbdd012b997265fe8cea6536cc5db759de50 (diff) | |
download | chromium_src-0387ae933d009e37f5fcba94544f356b45e617c1.zip chromium_src-0387ae933d009e37f5fcba94544f356b45e617c1.tar.gz chromium_src-0387ae933d009e37f5fcba94544f356b45e617c1.tar.bz2 |
Make messages in javascript's alert copyable.
Now, we can copy the message by Ctrl-C.
BUG=5879
Patch by hamaji@google.com via
http://codereview.chromium.org/93112
Review URL: http://codereview.chromium.org/92133
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14441 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/views/jsmessage_box_dialog.cc | 3 | ||||
-rw-r--r-- | chrome/views/controls/message_box_view.cc | 17 | ||||
-rw-r--r-- | chrome/views/controls/message_box_view.h | 3 |
3 files changed, 22 insertions, 1 deletions
diff --git a/chrome/browser/views/jsmessage_box_dialog.cc b/chrome/browser/views/jsmessage_box_dialog.cc index b42c2d4..1889317 100644 --- a/chrome/browser/views/jsmessage_box_dialog.cc +++ b/chrome/browser/views/jsmessage_box_dialog.cc @@ -24,6 +24,8 @@ JavascriptMessageBoxDialog::JavascriptMessageBoxDialog( message_text, default_prompt_text)) { DCHECK(message_box_view_); + message_box_view_->AddAccelerator( + views::Accelerator('C', false, true, false)); if (display_suppress_checkbox) { message_box_view_->SetCheckBoxLabel( l10n_util::GetString(IDS_JAVASCRIPT_MESSAGEBOX_SUPPRESS_OPTION)); @@ -89,7 +91,6 @@ bool JavascriptMessageBoxDialog::Cancel() { } bool JavascriptMessageBoxDialog::Accept() { - parent_->OnAccept(message_box_view_->GetInputText(), message_box_view_->IsCheckBoxSelected()); return true; diff --git a/chrome/views/controls/message_box_view.cc b/chrome/views/controls/message_box_view.cc index 35bd80a..05bc6ac 100644 --- a/chrome/views/controls/message_box_view.cc +++ b/chrome/views/controls/message_box_view.cc @@ -5,8 +5,11 @@ #include "chrome/views/controls/message_box_view.h" #include "base/message_loop.h" +#include "base/scoped_clipboard_writer.h" #include "base/string_util.h" +#include "chrome/browser/browser_process.h" #include "chrome/browser/views/standard_layout.h" +#include "chrome/common/clipboard_service.h" #include "chrome/common/l10n_util.h" #include "chrome/common/message_box_flags.h" #include "chrome/views/controls/button/checkbox.h" @@ -87,6 +90,20 @@ void MessageBoxView::ViewHierarchyChanged(bool is_add, } } +bool MessageBoxView::AcceleratorPressed( + const views::Accelerator& accelerator) { + // We only accepts Ctrl-C. + DCHECK(accelerator.GetKeyCode() == 'C' && accelerator.IsCtrlDown()); + + ClipboardService* clipboard = g_browser_process->clipboard_service(); + if (!clipboard) + return false; + + ScopedClipboardWriter scw(clipboard); + scw.WriteText(message_label_->GetText()); + return true; +} + /////////////////////////////////////////////////////////////////////////////// // MessageBoxView, private: diff --git a/chrome/views/controls/message_box_view.h b/chrome/views/controls/message_box_view.h index 819b56a..c3960ac 100644 --- a/chrome/views/controls/message_box_view.h +++ b/chrome/views/controls/message_box_view.h @@ -59,6 +59,9 @@ class MessageBoxView : public views::View { views::View* parent, views::View* child); + // Handles Ctrl-C and writes the message in the system clipboard. + virtual bool AcceleratorPressed(const views::Accelerator& accelerator); + private: // Sets up the layout manager and initializes the prompt field. This should // only be called once, from the constructor. |