diff --git a/content/events/src/nsContentEventHandler.cpp b/content/events/src/nsContentEventHandler.cpp index c827808716cf..c01c36ebbc72 100644 --- a/content/events/src/nsContentEventHandler.cpp +++ b/content/events/src/nsContentEventHandler.cpp @@ -375,7 +375,7 @@ nsContentEventHandler::SetRangeFromFlatTextOffset( uint32_t nativeOffset = 0; uint32_t nativeEndOffset = aNativeOffset + aNativeLength; - nsCOMPtr content; + bool startSet = false; for (; !iter->IsDone(); iter->Next()) { nsINode* node = iter->GetCurrentNode(); if (!node) @@ -405,6 +405,7 @@ nsContentEventHandler::SetRangeFromFlatTextOffset( rv = aRange->SetStart(domNode, int32_t(xpOffset)); NS_ENSURE_SUCCESS(rv, rv); + startSet = true; if (aNativeLength == 0) { // Ensure that the end offset and the start offset are same. rv = aRange->SetEnd(domNode, int32_t(xpOffset)); @@ -446,8 +447,9 @@ nsContentEventHandler::SetRangeFromFlatTextOffset( nsCOMPtr domNode(do_QueryInterface(mRootContent)); NS_ASSERTION(domNode, "lastContent doesn't have nsIDOMNode!"); - if (!content) { - rv = aRange->SetStart(domNode, 0); + if (!startSet) { + MOZ_ASSERT(!mRootContent->IsNodeOfType(nsINode::eTEXT)); + rv = aRange->SetStart(domNode, int32_t(mRootContent->GetChildCount())); NS_ENSURE_SUCCESS(rv, rv); } rv = aRange->SetEnd(domNode, int32_t(mRootContent->GetChildCount())); diff --git a/widget/android/nsWindow.cpp b/widget/android/nsWindow.cpp index 82c838492491..72359bd0d2aa 100644 --- a/widget/android/nsWindow.cpp +++ b/widget/android/nsWindow.cpp @@ -1956,6 +1956,7 @@ nsWindow::OnIMEEvent(AndroidGeckoEvent *ae) ae->Offset() + ae->Count()); selEvent.mLength = uint32_t(NS_ABS(ae->Count())); selEvent.mReversed = ae->Count() >= 0 ? false : true; + selEvent.mExpandToClusterBoundary = false; DispatchEvent(&selEvent); }