diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2011-08-24 01:26:29 (GMT) |
---|---|---|
committer | Andrew den Exter <andrew.den-exter@nokia.com> | 2011-08-24 02:01:46 (GMT) |
commit | 33eb83565466d3dc31ea90dcf18dc3c7b16fd5b6 (patch) | |
tree | 62849f44f584b4164ad0ada0ba1a7c25814aa080 /src | |
parent | 1ee6ff9fab218a8fa02a3cad1614730eb716bf45 (diff) | |
download | Qt-33eb83565466d3dc31ea90dcf18dc3c7b16fd5b6.zip Qt-33eb83565466d3dc31ea90dcf18dc3c7b16fd5b6.tar.gz Qt-33eb83565466d3dc31ea90dcf18dc3c7b16fd5b6.tar.bz2 |
Make it easier to select words at the start of a line.
QTextControl's word selection will only include a word if the cursor
position is past the mid point of the word. This can make it
difficult to select words near the edges of the screen on touch
devices. For the TextEdit word selection mode select a word ignore
the relative position within a word.
Change-Id: I2bc61376f663836fedd7e157448f0b565a64d485
Task-number: QT-5206
Reviewed-by: Martin Jones
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/text/qtextcontrol.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp index 9081ab7..f3d42f8 100644 --- a/src/gui/text/qtextcontrol.cpp +++ b/src/gui/text/qtextcontrol.cpp @@ -679,20 +679,30 @@ void QTextControlPrivate::extendWordwiseSelection(int suggestedNewPosition, qrea if (!wordSelectionEnabled && (mouseXPosition < wordStartX || mouseXPosition > wordEndX)) return; - // keep the already selected word even when moving to the left - // (#39164) - if (suggestedNewPosition < selectedWordOnDoubleClick.position()) - cursor.setPosition(selectedWordOnDoubleClick.selectionEnd()); - else - cursor.setPosition(selectedWordOnDoubleClick.selectionStart()); + if (wordSelectionEnabled) { + if (suggestedNewPosition < selectedWordOnDoubleClick.position()) { + cursor.setPosition(selectedWordOnDoubleClick.selectionEnd()); + setCursorPosition(wordStartPos, QTextCursor::KeepAnchor); + } else { + cursor.setPosition(selectedWordOnDoubleClick.selectionStart()); + setCursorPosition(wordEndPos, QTextCursor::KeepAnchor); + } + } else { + // keep the already selected word even when moving to the left + // (#39164) + if (suggestedNewPosition < selectedWordOnDoubleClick.position()) + cursor.setPosition(selectedWordOnDoubleClick.selectionEnd()); + else + cursor.setPosition(selectedWordOnDoubleClick.selectionStart()); - const qreal differenceToStart = mouseXPosition - wordStartX; - const qreal differenceToEnd = wordEndX - mouseXPosition; + const qreal differenceToStart = mouseXPosition - wordStartX; + const qreal differenceToEnd = wordEndX - mouseXPosition; - if (differenceToStart < differenceToEnd) - setCursorPosition(wordStartPos, QTextCursor::KeepAnchor); - else - setCursorPosition(wordEndPos, QTextCursor::KeepAnchor); + if (differenceToStart < differenceToEnd) + setCursorPosition(wordStartPos, QTextCursor::KeepAnchor); + else + setCursorPosition(wordEndPos, QTextCursor::KeepAnchor); + } if (interactionFlags & Qt::TextSelectableByMouse) { #ifndef QT_NO_CLIPBOARD |