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

Side by Side Diff: third_party/WebKit/Source/core/html/TextControlElement.cpp

Issue 2882953002: Merge "INPUT/TEXTAREA elements: Fix incorrect selectionStart/selectionEnd values after blur." to M59 (Closed)
Patch Set: Created 3 years, 7 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 unified diff | Download patch
« no previous file with comments | « third_party/WebKit/LayoutTests/fast/forms/text/text-selection-after-type-change.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 UpdatePlaceholderVisibility(); 92 UpdatePlaceholderVisibility();
93 HandleBlurEvent(); 93 HandleBlurEvent();
94 HTMLFormControlElementWithState::DispatchBlurEvent(new_focused_element, type, 94 HTMLFormControlElementWithState::DispatchBlurEvent(new_focused_element, type,
95 source_capabilities); 95 source_capabilities);
96 } 96 }
97 97
98 void TextControlElement::DefaultEventHandler(Event* event) { 98 void TextControlElement::DefaultEventHandler(Event* event) {
99 if (event->type() == EventTypeNames::webkitEditableContentChanged && 99 if (event->type() == EventTypeNames::webkitEditableContentChanged &&
100 GetLayoutObject() && GetLayoutObject()->IsTextControl()) { 100 GetLayoutObject() && GetLayoutObject()->IsTextControl()) {
101 last_change_was_user_edit_ = !GetDocument().IsRunningExecCommand(); 101 last_change_was_user_edit_ = !GetDocument().IsRunningExecCommand();
102
103 if (IsFocused()) {
104 // Updating the cache in SelectionChanged() isn't enough because
105 // SelectionChanged() is not called if:
106 // - Text nodes in the inner-editor is split to multiple, and
107 // - The caret is on the beginning of a Text node, and its previous node
108 // is updated, or
109 // - The caret is on the end of a text node, and its next node is updated.
110 CacheSelection(ComputeSelectionStart(), ComputeSelectionEnd(),
111 ComputeSelectionDirection());
112 }
113
102 SubtreeHasChanged(); 114 SubtreeHasChanged();
103 return; 115 return;
104 } 116 }
105 117
106 HTMLFormControlElementWithState::DefaultEventHandler(event); 118 HTMLFormControlElementWithState::DefaultEventHandler(event);
107 } 119 }
108 120
109 void TextControlElement::ForwardEvent(Event* event) { 121 void TextControlElement::ForwardEvent(Event* event) {
110 if (event->type() == EventTypeNames::blur || 122 if (event->type() == EventTypeNames::blur ||
111 event->type() == EventTypeNames::focus) 123 event->type() == EventTypeNames::focus)
(...skipping 847 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 971
960 void TextControlElement::CopyNonAttributePropertiesFromElement( 972 void TextControlElement::CopyNonAttributePropertiesFromElement(
961 const Element& source) { 973 const Element& source) {
962 const TextControlElement& source_element = 974 const TextControlElement& source_element =
963 static_cast<const TextControlElement&>(source); 975 static_cast<const TextControlElement&>(source);
964 last_change_was_user_edit_ = source_element.last_change_was_user_edit_; 976 last_change_was_user_edit_ = source_element.last_change_was_user_edit_;
965 HTMLFormControlElement::CopyNonAttributePropertiesFromElement(source); 977 HTMLFormControlElement::CopyNonAttributePropertiesFromElement(source);
966 } 978 }
967 979
968 } // namespace blink 980 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/fast/forms/text/text-selection-after-type-change.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698