Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(705)

Unified Diff: views/controls/textfield/textfield_views_model.cc

Issue 6004010: Implement clipboard features in views textfield. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: code style fixes Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;
}
« no previous file with comments | « views/controls/textfield/textfield_views_model.h ('k') | views/controls/textfield/textfield_views_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698