Index: views/controls/textfield/textfield_views_model.cc |
diff --git a/views/controls/textfield/textfield_views_model.cc b/views/controls/textfield/textfield_views_model.cc |
index 0f5b23bdb4b2430c7670909df68a71d31b41b583..7111ac25e6bbf8fb3f5f6b88771d45a6305c343f 100644 |
--- a/views/controls/textfield/textfield_views_model.cc |
+++ b/views/controls/textfield/textfield_views_model.cc |
@@ -10,6 +10,9 @@ |
#include "base/logging.h" |
#include "base/utf_string_conversions.h" |
#include "gfx/font.h" |
+#include "ui/base/clipboard/clipboard.h" |
+#include "ui/base/clipboard/scoped_clipboard_writer.h" |
+#include "views/views_delegate.h" |
namespace views { |
@@ -225,6 +228,38 @@ void TextfieldViewsModel::ClearSelection() { |
selection_begin_ = cursor_pos_; |
} |
+bool TextfieldViewsModel::Cut() { |
+ if (HasSelection()) { |
+ ui::ScopedClipboardWriter(views::ViewsDelegate::views_delegate |
+ ->GetClipboard()).WriteText(GetSelectedText()); |
+ DeleteSelection(); |
+ return true; |
+ } |
+ return false; |
+} |
+ |
+void TextfieldViewsModel::Copy() { |
+ if (HasSelection()) { |
+ ui::ScopedClipboardWriter(views::ViewsDelegate::views_delegate |
+ ->GetClipboard()).WriteText(GetSelectedText()); |
+ } |
+} |
+ |
+bool TextfieldViewsModel::Paste() { |
+ string16 result; |
+ views::ViewsDelegate::views_delegate->GetClipboard() |
+ ->ReadText(ui::Clipboard::BUFFER_STANDARD, &result); |
+ if (!result.empty()) { |
+ if (HasSelection()) |
+ DeleteSelection(); |
+ text_.insert(cursor_pos_, result); |
+ cursor_pos_ += result.length(); |
+ ClearSelection(); |
+ return true; |
+ } |
+ return false; |
+} |
+ |
bool TextfieldViewsModel::HasSelection() const { |
return selection_begin_ != cursor_pos_; |
} |