Changeset 70982 in webkit


Ignore:
Timestamp:
Oct 30, 2010 7:51:34 AM (13 years ago)
Author:
andreas.kling@nokia.com
Message:

2010-10-30 Andreas Kling <kling@webkit.org>

Reviewed by Antonio Gomes.

[Qt] IM: Don't manipulate selection via RenderTextControl
https://bugs.webkit.org/show_bug.cgi?id=48700

Go directly through the Frame's SelectionController instead.

No new tests, this is covered by tst_QWebPage::inputMethods.

  • Api/qwebpage.cpp: (QWebPagePrivate::inputMethodEvent): (QWebPage::inputMethodQuery):
Location:
trunk/WebKit/qt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/qt/Api/qwebpage.cpp

    r70948 r70982  
    10251025    }
    10261026
    1027     RenderObject* renderer = 0;
     1027    Node* node = 0;
    10281028    if (frame->selection()->rootEditableElement())
    1029         renderer = frame->selection()->rootEditableElement()->shadowAncestorNode()->renderer();
     1029        node = frame->selection()->rootEditableElement()->shadowAncestorNode();
    10301030
    10311031    Vector<CompositionUnderline> underlines;
     
    10551055            hasSelection = true;
    10561056            // A selection in the inputMethodEvent is always reflected in the visible text
    1057             if (renderer && renderer->node())
    1058                 setSelectionRange(renderer->node(), qMin(a.start, (a.start + a.length)), qMax(a.start, (a.start + a.length)));
     1057            if (node)
     1058                setSelectionRange(node, qMin(a.start, (a.start + a.length)), qMax(a.start, (a.start + a.length)));
    10591059
    10601060            if (!ev->preeditString().isEmpty()) {
     
    13201320        }
    13211321        case Qt::ImCursorPosition: {
    1322             if (renderTextControl) {
    1323                 if (editor->hasComposition()) {
    1324                     RefPtr<Range> range = editor->compositionRange();
    1325                     return QVariant(renderTextControl->selectionEnd() - TextIterator::rangeLength(range.get()));
    1326                 }
    1327                 return QVariant(frame->selection()->extent().offsetInContainerNode());
     1322            if (editor->hasComposition()) {
     1323                RefPtr<Range> range = editor->compositionRange();
     1324                return QVariant(frame->selection()->end().offsetInContainerNode() - TextIterator::rangeLength(range.get()));
    13281325            }
    1329             return QVariant();
     1326            return QVariant(frame->selection()->extent().offsetInContainerNode());
    13301327        }
    13311328        case Qt::ImSurroundingText: {
     
    13411338        case Qt::ImCurrentSelection: {
    13421339            if (renderTextControl) {
    1343                 int start = renderTextControl->selectionStart();
    1344                 int end = renderTextControl->selectionEnd();
     1340                int start = frame->selection()->start().offsetInContainerNode();
     1341                int end = frame->selection()->end().offsetInContainerNode();
    13451342                if (end > start)
    1346                     return QVariant(QString(renderTextControl->text()).mid(start,end-start));
     1343                    return QVariant(QString(renderTextControl->text()).mid(start, end - start));
    13471344            }
    13481345            return QVariant();
     
    13501347        }
    13511348        case Qt::ImAnchorPosition: {
    1352             if (renderTextControl) {
    1353                 if (editor->hasComposition()) {
    1354                     RefPtr<Range> range = editor->compositionRange();
    1355                     return QVariant(renderTextControl->selectionStart() - TextIterator::rangeLength(range.get()));
    1356                 }
    1357                 return QVariant(frame->selection()->base().offsetInContainerNode());
     1349            if (editor->hasComposition()) {
     1350                RefPtr<Range> range = editor->compositionRange();
     1351                return QVariant(frame->selection()->start().offsetInContainerNode() - TextIterator::rangeLength(range.get()));
    13581352            }
    1359             return QVariant();
     1353            return QVariant(frame->selection()->base().offsetInContainerNode());
    13601354        }
    13611355        case Qt::ImMaximumTextLength: {
  • trunk/WebKit/qt/ChangeLog

    r70976 r70982  
     12010-10-30  Andreas Kling  <kling@webkit.org>
     2
     3        Reviewed by Antonio Gomes.
     4
     5        [Qt] IM: Don't manipulate selection via RenderTextControl
     6        https://bugs.webkit.org/show_bug.cgi?id=48700
     7
     8        Go directly through the Frame's SelectionController instead.
     9
     10        No new tests, this is covered by tst_QWebPage::inputMethods.
     11
     12        * Api/qwebpage.cpp:
     13        (QWebPagePrivate::inputMethodEvent):
     14        (QWebPage::inputMethodQuery):
     15
    1162010-10-29  Daniel Bates  <dbates@rim.com>
    217
Note: See TracChangeset for help on using the changeset viewer.