Changeset 70982 in webkit
- Timestamp:
- Oct 30, 2010 7:51:34 AM (13 years ago)
- Location:
- trunk/WebKit/qt
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/qt/Api/qwebpage.cpp
r70948 r70982 1025 1025 } 1026 1026 1027 RenderObject* renderer= 0;1027 Node* node = 0; 1028 1028 if (frame->selection()->rootEditableElement()) 1029 renderer = frame->selection()->rootEditableElement()->shadowAncestorNode()->renderer();1029 node = frame->selection()->rootEditableElement()->shadowAncestorNode(); 1030 1030 1031 1031 Vector<CompositionUnderline> underlines; … … 1055 1055 hasSelection = true; 1056 1056 // 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))); 1059 1059 1060 1060 if (!ev->preeditString().isEmpty()) { … … 1320 1320 } 1321 1321 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())); 1328 1325 } 1329 return QVariant( );1326 return QVariant(frame->selection()->extent().offsetInContainerNode()); 1330 1327 } 1331 1328 case Qt::ImSurroundingText: { … … 1341 1338 case Qt::ImCurrentSelection: { 1342 1339 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(); 1345 1342 if (end > start) 1346 return QVariant(QString(renderTextControl->text()).mid(start, end-start));1343 return QVariant(QString(renderTextControl->text()).mid(start, end - start)); 1347 1344 } 1348 1345 return QVariant(); … … 1350 1347 } 1351 1348 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())); 1358 1352 } 1359 return QVariant( );1353 return QVariant(frame->selection()->base().offsetInContainerNode()); 1360 1354 } 1361 1355 case Qt::ImMaximumTextLength: { -
trunk/WebKit/qt/ChangeLog
r70976 r70982 1 2010-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 1 16 2010-10-29 Daniel Bates <dbates@rim.com> 2 17
Note: See TracChangeset
for help on using the changeset viewer.