Chromium Code Reviews| 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_; |
| } |