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

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: Created 9 years, 12 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 21783ec776d500bd7b06b36858a7033b7c969e57..3c179a8b35200bff9206139caec96b549894b05e 100644
--- a/views/controls/textfield/textfield_views_model.cc
+++ b/views/controls/textfield/textfield_views_model.cc
@@ -6,10 +6,13 @@
#include <algorithm>
+#include "app/clipboard/clipboard.h"
+#include "app/clipboard/scoped_clipboard_writer.h"
#include "base/i18n/break_iterator.h"
#include "base/logging.h"
#include "base/utf_string_conversions.h"
#include "gfx/font.h"
+#include "views/views_delegate.h"
namespace views {
@@ -223,6 +226,42 @@ void TextfieldViewsModel::ClearSelection() {
selection_begin_ = cursor_pos_;
}
+bool TextfieldViewsModel::HandleClipboardEvents(app::KeyboardCode key_code) {
rjkroege 2011/01/05 15:31:22 please remember that cut&paste is also invokable f
varunjain 2011/01/05 16:19:31 Done.
+ Clipboard* clipboard = views::ViewsDelegate::views_delegate->GetClipboard();
+ bool text_changed = false;
+ string16 result;
+ switch (key_code) {
+ case app::VKEY_C:
+ if (HasSelection()) {
+ ScopedClipboardWriter scw(clipboard);
+ scw.WriteText(GetSelectedText());
+ }
+ break;
+ case app::VKEY_X:
+ if (HasSelection()) {
+ ScopedClipboardWriter scw(clipboard);
+ scw.WriteText(GetSelectedText());
+ DeleteSelection();
+ text_changed = true;
+ }
+ break;
+ case app::VKEY_V:
+ clipboard->ReadText(Clipboard::BUFFER_STANDARD, &result);
+ if (!result.empty()) {
+ if (HasSelection())
+ DeleteSelection();
+ text_.insert(cursor_pos_, result);
+ cursor_pos_ += result.length();
+ ClearSelection();
+ text_changed = true;
+ }
+ break;
+ default:
+ break;
+ }
+ return text_changed;
+}
+
bool TextfieldViewsModel::HasSelection() const {
return selection_begin_ != cursor_pos_;
}

Powered by Google App Engine
This is Rietveld 408576698