| OLD | NEW | 
|---|
| 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 313 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 324 | 324 | 
| 325     if (Frame* frame = document()->frame()) | 325     if (Frame* frame = document()->frame()) | 
| 326         frame->selection()->setSelection(newSelection); | 326         frame->selection()->setSelection(newSelection); | 
| 327 } | 327 } | 
| 328 | 328 | 
| 329 VisiblePosition HTMLTextFormControlElement::visiblePositionForIndex(int index) c
     onst | 329 VisiblePosition HTMLTextFormControlElement::visiblePositionForIndex(int index) c
     onst | 
| 330 { | 330 { | 
| 331     if (index <= 0) | 331     if (index <= 0) | 
| 332         return VisiblePosition(firstPositionInNode(innerTextElement()), DOWNSTRE
     AM); | 332         return VisiblePosition(firstPositionInNode(innerTextElement()), DOWNSTRE
     AM); | 
| 333     RefPtr<Range> range = Range::create(document()); | 333     RefPtr<Range> range = Range::create(document()); | 
| 334     range->selectNodeContents(innerTextElement(), ASSERT_NO_EXCEPTION_STATE); | 334     range->selectNodeContents(innerTextElement(), ASSERT_NO_EXCEPTION); | 
| 335     CharacterIterator it(range.get()); | 335     CharacterIterator it(range.get()); | 
| 336     it.advance(index - 1); | 336     it.advance(index - 1); | 
| 337     return VisiblePosition(it.range()->endPosition(), UPSTREAM); | 337     return VisiblePosition(it.range()->endPosition(), UPSTREAM); | 
| 338 } | 338 } | 
| 339 | 339 | 
| 340 int HTMLTextFormControlElement::indexForVisiblePosition(const VisiblePosition& p
     os) const | 340 int HTMLTextFormControlElement::indexForVisiblePosition(const VisiblePosition& p
     os) const | 
| 341 { | 341 { | 
| 342     Position indexPosition = pos.deepEquivalent().parentAnchoredEquivalent(); | 342     Position indexPosition = pos.deepEquivalent().parentAnchoredEquivalent(); | 
| 343     if (enclosingTextFormControl(indexPosition) != this) | 343     if (enclosingTextFormControl(indexPosition) != this) | 
| 344         return 0; | 344         return 0; | 
| 345     RefPtr<Range> range = Range::create(indexPosition.document()); | 345     RefPtr<Range> range = Range::create(indexPosition.document()); | 
| 346     range->setStart(innerTextElement(), 0, ASSERT_NO_EXCEPTION_STATE); | 346     range->setStart(innerTextElement(), 0, ASSERT_NO_EXCEPTION); | 
| 347     range->setEnd(indexPosition.containerNode(), indexPosition.offsetInContainer
     Node(), ASSERT_NO_EXCEPTION_STATE); | 347     range->setEnd(indexPosition.containerNode(), indexPosition.offsetInContainer
     Node(), ASSERT_NO_EXCEPTION); | 
| 348     return TextIterator::rangeLength(range.get()); | 348     return TextIterator::rangeLength(range.get()); | 
| 349 } | 349 } | 
| 350 | 350 | 
| 351 int HTMLTextFormControlElement::selectionStart() const | 351 int HTMLTextFormControlElement::selectionStart() const | 
| 352 { | 352 { | 
| 353     if (!isTextFormControl()) | 353     if (!isTextFormControl()) | 
| 354         return 0; | 354         return 0; | 
| 355     if (document()->focusedElement() != this && hasCachedSelection()) | 355     if (document()->focusedElement() != this && hasCachedSelection()) | 
| 356         return m_cachedSelectionStart; | 356         return m_cachedSelectionStart; | 
| 357 | 357 | 
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 518 { | 518 { | 
| 519     if (!isTextFormControl()) | 519     if (!isTextFormControl()) | 
| 520         return; | 520         return; | 
| 521 | 521 | 
| 522     bool textIsChanged = value != innerTextValue(); | 522     bool textIsChanged = value != innerTextValue(); | 
| 523     if (textIsChanged || !innerTextElement()->hasChildNodes()) { | 523     if (textIsChanged || !innerTextElement()->hasChildNodes()) { | 
| 524         if (textIsChanged && document() && renderer()) { | 524         if (textIsChanged && document() && renderer()) { | 
| 525             if (AXObjectCache* cache = document()->existingAXObjectCache()) | 525             if (AXObjectCache* cache = document()->existingAXObjectCache()) | 
| 526                 cache->postNotification(this, AXObjectCache::AXValueChanged, fal
     se); | 526                 cache->postNotification(this, AXObjectCache::AXValueChanged, fal
     se); | 
| 527         } | 527         } | 
| 528         innerTextElement()->setInnerText(value, ASSERT_NO_EXCEPTION_STATE); | 528         innerTextElement()->setInnerText(value, ASSERT_NO_EXCEPTION); | 
| 529 | 529 | 
| 530         if (value.endsWith('\n') || value.endsWith('\r')) | 530         if (value.endsWith('\n') || value.endsWith('\r')) | 
| 531             innerTextElement()->appendChild(HTMLBRElement::create(document()), A
     SSERT_NO_EXCEPTION_STATE, AttachLazily); | 531             innerTextElement()->appendChild(HTMLBRElement::create(document()), A
     SSERT_NO_EXCEPTION, AttachLazily); | 
| 532     } | 532     } | 
| 533 | 533 | 
| 534     setFormControlValueMatchesRenderer(true); | 534     setFormControlValueMatchesRenderer(true); | 
| 535 } | 535 } | 
| 536 | 536 | 
| 537 static String finishText(StringBuilder& result) | 537 static String finishText(StringBuilder& result) | 
| 538 { | 538 { | 
| 539     // Remove one trailing newline; there's always one that's collapsed out by r
     endering. | 539     // Remove one trailing newline; there's always one that's collapsed out by r
     endering. | 
| 540     size_t size = result.length(); | 540     size_t size = result.length(); | 
| 541     if (size && result[size - 1] == '\n') | 541     if (size && result[size - 1] == '\n') | 
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 657             bool isAuto; | 657             bool isAuto; | 
| 658             TextDirection textDirection = static_cast<const HTMLElement*>(elemen
     t)->directionalityIfhasDirAutoAttribute(isAuto); | 658             TextDirection textDirection = static_cast<const HTMLElement*>(elemen
     t)->directionalityIfhasDirAutoAttribute(isAuto); | 
| 659             return textDirection == RTL ? "rtl" : "ltr"; | 659             return textDirection == RTL ? "rtl" : "ltr"; | 
| 660         } | 660         } | 
| 661     } | 661     } | 
| 662 | 662 | 
| 663     return "ltr"; | 663     return "ltr"; | 
| 664 } | 664 } | 
| 665 | 665 | 
| 666 } // namespace Webcore | 666 } // namespace Webcore | 
| OLD | NEW | 
|---|