diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp b/chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp index f4ecff6596f..ce1b9f7e983 100644 --- a/chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp +++ b/chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp @@ -27,8 +27,6 @@ #include "config.h" #include "core/events/CompositionEvent.h" -#include "core/events/ThreadLocalEventNames.h" - namespace WebCore { CompositionEventInit::CompositionEventInit() @@ -36,29 +34,38 @@ CompositionEventInit::CompositionEventInit() } CompositionEvent::CompositionEvent() + : m_activeSegmentStart(0) + , m_activeSegmentEnd(0) { ScriptWrappable::init(this); + initializeSegments(); } -CompositionEvent::CompositionEvent(const AtomicString& type, PassRefPtr<AbstractView> view, const String& data) +CompositionEvent::CompositionEvent(const AtomicString& type, PassRefPtrWillBeRawPtr<AbstractView> view, const String& data, const Vector<CompositionUnderline>& underlines) : UIEvent(type, true, true, view, 0) , m_data(data) + , m_activeSegmentStart(0) + , m_activeSegmentEnd(0) { ScriptWrappable::init(this); + initializeSegments(&underlines); } CompositionEvent::CompositionEvent(const AtomicString& type, const CompositionEventInit& initializer) : UIEvent(type, initializer) , m_data(initializer.data) + , m_activeSegmentStart(0) + , m_activeSegmentEnd(0) { ScriptWrappable::init(this); + initializeSegments(); } CompositionEvent::~CompositionEvent() { } -void CompositionEvent::initCompositionEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView> view, const String& data) +void CompositionEvent::initCompositionEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtrWillBeRawPtr<AbstractView> view, const String& data) { if (dispatched()) return; @@ -66,6 +73,29 @@ void CompositionEvent::initCompositionEvent(const AtomicString& type, bool canBu initUIEvent(type, canBubble, cancelable, view, 0); m_data = data; + initializeSegments(); +} + +void CompositionEvent::initializeSegments(const Vector<CompositionUnderline>* underlines) +{ + m_activeSegmentStart = 0; + m_activeSegmentEnd = m_data.length(); + + if (!underlines || !underlines->size()) { + m_segments.append(0); + return; + } + + for (size_t i = 0; i < underlines->size(); ++i) { + if (underlines->at(i).thick) { + m_activeSegmentStart = underlines->at(i).startOffset; + m_activeSegmentEnd = underlines->at(i).endOffset; + break; + } + } + + for (size_t i = 0; i < underlines->size(); ++i) + m_segments.append(underlines->at(i).startOffset); } const AtomicString& CompositionEvent::interfaceName() const @@ -73,4 +103,9 @@ const AtomicString& CompositionEvent::interfaceName() const return EventNames::CompositionEvent; } +void CompositionEvent::trace(Visitor* visitor) +{ + UIEvent::trace(visitor); +} + } // namespace WebCore |