 Chromium Code Reviews
 Chromium Code Reviews Issue 6004010:
  Implement clipboard features in views textfield.  (Closed) 
  Base URL: http://git.chromium.org/git/chromium.git@trunk
    
  
    Issue 6004010:
  Implement clipboard features in views textfield.  (Closed) 
  Base URL: http://git.chromium.org/git/chromium.git@trunk| 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_; | 
| } |