diff options
Diffstat (limited to 'chrome/views/controls/text_field.cc')
-rw-r--r-- | chrome/views/controls/text_field.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/chrome/views/controls/text_field.cc b/chrome/views/controls/text_field.cc index a83c1c0..5114d83c 100644 --- a/chrome/views/controls/text_field.cc +++ b/chrome/views/controls/text_field.cc @@ -805,13 +805,19 @@ void TextField::Edit::HandleKeystroke(UINT message, UINT repeat_count, UINT flags) { ScopedFreeze freeze(this, GetTextObjectModel()); - OnBeforePossibleChange(); - DefWindowProc(message, key, MAKELPARAM(repeat_count, flags)); - OnAfterPossibleChange(); TextField::Controller* controller = parent_->GetController(); - if (controller) - controller->HandleKeystroke(parent_, message, key, repeat_count, flags); + bool handled = false; + if (controller) { + handled = + controller->HandleKeystroke(parent_, message, key, repeat_count, flags); + } + + if (!handled) { + OnBeforePossibleChange(); + DefWindowProc(message, key, MAKELPARAM(repeat_count, flags)); + OnAfterPossibleChange(); + } } void TextField::Edit::OnBeforePossibleChange() { |