summaryrefslogtreecommitdiffstats
path: root/src/declarative/graphicsitems/qdeclarativetextinput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/graphicsitems/qdeclarativetextinput.cpp')
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index ce75617d..28e89fff 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
@@ -1920,16 +1920,15 @@ void QDeclarativeTextInput::selectionChanged()
updateRect();//TODO: Only update rect in selection
emit selectedTextChanged();
- if(d->lastSelectionStart != d->control->selectionStart()){
- d->lastSelectionStart = d->control->selectionStart();
- if(d->lastSelectionStart == -1)
- d->lastSelectionStart = d->control->cursor();
+ int newSelectionStart = d->control->hasSelectedText() ? d->control->selectionStart() : d->control->cursor();
+ int newSelectionEnd = d->control->hasSelectedText() ? d->control->selectionEnd() : d->control->cursor();
+
+ if (d->lastSelectionStart != newSelectionStart) {
+ d->lastSelectionStart = newSelectionStart;
emit selectionStartChanged();
}
- if(d->lastSelectionEnd != d->control->selectionEnd()){
- d->lastSelectionEnd = d->control->selectionEnd();
- if(d->lastSelectionEnd == -1)
- d->lastSelectionEnd = d->control->cursor();
+ if (d->lastSelectionEnd != newSelectionEnd) {
+ d->lastSelectionEnd = newSelectionEnd;
emit selectionEndChanged();
}
}