summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-24 17:49:42 +0000
committertc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-24 17:49:42 +0000
commit0387ae933d009e37f5fcba94544f356b45e617c1 (patch)
tree4c97940bd99713157481d6e1c3d1f269c5a0cd67
parentc145cbdd012b997265fe8cea6536cc5db759de50 (diff)
downloadchromium_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.cc3
-rw-r--r--chrome/views/controls/message_box_view.cc17
-rw-r--r--chrome/views/controls/message_box_view.h3
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.