[Webkit-unassigned] [Bug 35933] [Qt] [Symbian] Can not backward select (highlight) text using virtual keyboard

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Mar 9 11:55:19 PST 2010


https://bugs.webkit.org/show_bug.cgi?id=35933





--- Comment #2 from shen yi <shenyi2006 at gmail.com>  2010-03-09 11:55:19 PST ---
This issue is Qt only, and the root cause is that webcore assumes the
selection's start position is always before the end position.

In RenderTextControl.cpp;

void RenderTextControl::setSelectionEnd(int end)
{
    setSelectionRange(min(end, selectionStart()), end);
}

The setSelectionEnd(int) function was called from
QWebPagePrivate::inputMethodEvent(QInputMethodEvent*) at qwebpage.cpp

  case QInputMethodEvent::Selection: {
     if (renderTextControl) {
         renderTextControl->setSelectionStart(a.start);
         renderTextControl->setSelectionEnd(a.start + a.length);
     }
     break;
  }

However, in above code, the a.length, which is from QcoeFepInputContext, is
negative when doing backward selection:

void QCoeFepInputContext::SetCursorSelectionForFepL(const TCursorSelection&) {
    int pos = aCursorSelection.iAnchorPos;
    int length = aCursorSelection.iCursorPos - pos;
    QList<QInputMethodEvent::Attribute> attributes;
    attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection,
pos, length, QVariant());
}

It can explain why the backward selection doesn't work, that is,

when start position is larger than end position,

setSelectionRange(min(end, selectionStart()), end);
  equals
setSelectionRange(end, end);

The patch I attached would check/adjust the start & end position before calling
the setSelectionStart & setSelectionEnd. I have tested it on both s60 emulator
& target.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list