Closed
Bug 1199997
Opened 9 years ago
Closed 9 years ago
[TSF] Selected text isn't replaced with composition string when you use MS Pinyin, MS Wubi, MS Changjie and MS Quick on Win8.1 and Win10
Categories
(Core :: Widget: Win32, defect)
Tracking
()
RESOLVED
FIXED
mozilla43
People
(Reporter: qydwhotmail, Assigned: masayuki)
References
Details
(Keywords: inputmethod)
Attachments
(3 files)
6.21 KB,
patch
|
emk
:
review+
Sylvestre
:
approval-mozilla-aurora+
|
Details | Diff | Splinter Review |
3.89 KB,
patch
|
ritu
:
approval-mozilla-beta+
|
Details | Diff | Splinter Review |
6.00 KB,
patch
|
emk
:
review+
ritu
:
approval-mozilla-beta+
|
Details | Diff | Splinter Review |
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:43.0) Gecko/20100101 Firefox/43.0 Build ID: 20150828030205 Steps to reproduce: 1. Open an e10s window. 2. Switch to Microsoft Pinyin Chinese Mode. 3. Select some text in any textbox and type something. Actual results: Selected text cannot be deleted automatically. Expected results: Selected text should be deleted automatically.
Reporter | ||
Updated•9 years ago
|
Blocks: e10s
Component: Untriaged → General
OS: Unspecified → Windows 10
Hardware: Unspecified → x86_64
Assignee | ||
Comment 2•9 years ago
|
||
Yes.
Status: UNCONFIRMED → NEW
Component: General → Widget: Win32
Ever confirmed: true
Flags: needinfo?(masayuki)
Product: Firefox → Core
Assignee | ||
Updated•9 years ago
|
Summary: Selected text cannot be deleted automatically when typing using Chinese Pinyin IME in e10s window → [TSF] Selected text cannot be deleted automatically when typing using Chinese Pinyin IME in e10s window
Assignee | ||
Updated•9 years ago
|
Keywords: inputmethod
Assignee | ||
Updated•9 years ago
|
Blocks: e10s-ime-tsf
Comment 3•9 years ago
|
||
(In reply to Masayuki Nakano (:masayuki) (Mozilla Japan) from comment #2) > Yes. Are we planning on shipping tsf in the near future?
Flags: needinfo?(masayuki)
Assignee | ||
Comment 4•9 years ago
|
||
(In reply to Jim Mathies [:jimm] from comment #3) > (In reply to Masayuki Nakano (:masayuki) (Mozilla Japan) from comment #2) > > Yes. > > Are we planning on shipping tsf in the near future? We have already enabled TSF in default settings even in e10s mode.
Flags: needinfo?(masayuki)
Assignee | ||
Comment 5•9 years ago
|
||
Sigh, this is not an e10s specific bug. We have this bug even in non-e10s mode.
Assignee: nobody → masayuki
Status: NEW → ASSIGNED
Assignee | ||
Updated•9 years ago
|
Assignee | ||
Comment 6•9 years ago
|
||
I confirmed that this can be reproduced on Beta. I guess that it's too late to fix this bug on Beta since Beta needs different patch for TSF. If the cause is in XP code, we may have a chance.
status-firefox40:
--- → unaffected
status-firefox41:
--- → affected
status-firefox42:
--- → affected
status-firefox43:
--- → affected
Assignee | ||
Updated•9 years ago
|
Summary: [TSF] Selected text cannot be deleted automatically when typing using Chinese Pinyin IME in e10s window → [TSF] Selected text isn't replaced with composition string when you use MS Pinyin on Win10
Assignee | ||
Comment 7•9 years ago
|
||
> 0[19ca0e800]: TSF: 0x1b119db00 Locking (TS_LF_READWRITE) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::QueryInsert(acpTestStart=1, acpTestEnd=2, cch=0, pacpResultStart=0x100000001, pacpResultEnd=0x2)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::QueryInsert() succeeded: *pacpResultStart=1, *pacpResultEnd=1)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::OnStartComposition(pComposition=0x19f06c470, pfOk=0x19c00c3f0), mComposition.mView=0x0
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RecordCompositionStartAction(aComposition=0x19f06c470, aRange=0x19f06c598, aPreserveSelection=false), mComposition.mView=0x0
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RecordCompositionStartAction(aComposition=0x19f06c470, aStart=1, aLength=0, aPreserveSelection=false), mComposition.mView=0x0
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=1, acpEnd=2 (length=1), reverted=true
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetCurrentText(): retrieving text from the content...
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::LockedContent(): mLockedContent={ mText="abc" (Length()=3), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=4294967295 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=1, acpEnd=2 (length=1), reverted=true
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RecordCompositionStartAction() succeeded: mComposition={ mStart=1, mString.Length()=0, mSelection={ acpStart=1, acpEnd=1, style.ase=TS_AE_END, style.fInterimChar=false } }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::OnStartComposition() succeeded
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::SetText(dwFlags=not-specified, acpStart=1, acpEnd=1, pchText=0x1af52b970 "n", cch=1, pChange=0x19c00c3c8), mComposition.IsComposing()=true
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::SetSelectionInternal(pSelection={ acpStart=1, acpEnd=1, style={ ase=TS_AE_END, fInterimChar=false} }, aDispatchCompositionChangeEvent=false), mComposition.IsComposing()=true
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=1, acpEnd=1 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::InsertTextAtSelectionInternal(aInsertStr="n", aTextChange=0x19c00c3c8), IsComposing=true
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=1, acpEnd=1 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::LockedContent(): mLockedContent={ mText="abc" (Length()=3), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=4294967295 }
> 0[19ca0e800]: TSF: 0x1b119dba0 TSFTextStore::Content::ReplaceTextWith(aStart=1, aLength=0, aReplaceString="n"), mComposition={ mStart=1, mString="n" }, mLastCompositionString="", mMinTextModifiedOffset=4294967295, firstDifferentOffset=1
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::InsertTextAtSelectionInternal() succeeded: mWidget=0x1a7f10400, mWidget->Destroyed()=false, aTextChange={ acpStart=1, acpOldEnd=1, acpNewEnd=2 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::SetText() succeeded: pChange={ acpStart=1, acpOldEnd=1, acpNewEnd=2 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetText(acpStart=0, acpEnd=-1, pchPlain=0x7ffb2fe56bc0, cchPlainReq=128, pcchPlainOut=0x19c00bf20, prgRunInfo=0x7ffb2fe56cc0, ulRunInfoReq=33, pulRunInfoOut=0x7ffb2fe56bb0, pacpNext=0x7ffb2fe56dc8), mComposition={ mStart=1, mString.Length()=1, IsComposing()=true }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::LockedContent(): mLockedContent={ mText="anbc" (Length()=4), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=1 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetText() succeeded: pcchPlainOut=0x19c00bf20, *prgRunInfo={ uCount=4, type=TS_RT_PLAIN }, *pulRunInfoOut=803564464, *pacpNext=803565000)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::OnUpdateComposition(pComposition=0x19f06c470, pRangeNew=0x0), mComposition.mView=0x19f06c470
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::OnUpdateComposition() succeeded but not complete
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::SetSelection(ulCount=1, pSelection=19c00c3a8 { acpStart=2, acpEnd=2, style={ ase=TS_AE_END, fInterimChar=false } }), mComposition.IsComposing()=true
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::SetSelectionInternal(pSelection={ acpStart=2, acpEnd=2, style={ ase=TS_AE_END, fInterimChar=false} }, aDispatchCompositionChangeEvent=true), mComposition.IsComposing()=true
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RestartCompositionIfNecessary(aRangeNew=0x0), mComposition.mView=0x19f06c470
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RestartCompositionIfNecessary(), range=1-2, mComposition={ mStart=1, mString.Length()=1 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RestartCompositionIfNecessary() succeeded
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RecordCompositionUpdateAction(), mComposition={ mView=0x19f06c470, mStart=1, mString="n" (Length()=1) }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RecordCompositionUpdateAction() succeeded
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::SetSelection() succeeded
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetSelection(ulIndex=4294967295, ulCount=1, pSelection=0x19c00c6b0, pcFetched=0x19c00cba4)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetSelection() succeeded
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetStatus(pdcs=0x19c00cc68)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetActiveView(pvcView=0x19c00cb98)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetActiveView() succeeded: *pvcView=1
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetWnd(vcView=1, phwnd=0x19c00cbc8), mWidget=0x1a7f10400
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetWnd() succeeded: *phwnd=0x6142c
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetStatus(pdcs=0x19c00ca88)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetSelection(ulIndex=4294967295, ulCount=1, pSelection=0x19c00c5b0, pcFetched=0x19c00ca90)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetSelection() succeeded
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetActiveView(pvcView=0x19c00c9e8)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetActiveView() succeeded: *pvcView=1
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetTextExt(vcView=1, acpStart=2, acpEnd=2, prc=0x19c00cab0, pfClipped=0x19c00ca80), mDeferNotifyingTSF=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetTextExt() hacked the offsets for TIP acpStart=1, acpEnd=1
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetScreenExtInternal()
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetScreenExtInternal() succeeded: aScreenExt={ left=1346, top=403, right=1566, bottom=433 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetTextExt() succeeded: *prc={ left=1365, top=410, right=1366, bottom=425 }, *pfClipped=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetActiveView(pvcView=0x19c00ca58)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetActiveView() succeeded: *pvcView=1
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetScreenExt(vcView=1, prc=0x19c00cac0)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetScreenExtInternal()
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetScreenExtInternal() succeeded: aScreenExt={ left=1346, top=403, right=1566, bottom=433 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetScreenExt() succeeded: *prc={ left=1346, top=403, right=1566, bottom=433 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetSelection(ulIndex=4294967295, ulCount=1, pSelection=0x19c00c6f0, pcFetched=0x19c00cc68)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetSelection() succeeded
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetText(acpStart=0, acpEnd=-1, pchPlain=0x7ffb2fe56bc0, cchPlainReq=128, pcchPlainOut=0x19c00c500, prgRunInfo=0x7ffb2fe56cc0, ulRunInfoReq=33, pulRunInfoOut=0x7ffb2fe56bb0, pacpNext=0x7ffb2fe56dc8), mComposition={ mStart=1, mString.Length()=1, IsComposing()=true }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::LockedContent(): mLockedContent={ mText="anbc" (Length()=4), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=1 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetText() succeeded: pcchPlainOut=0x19c00c500, *prgRunInfo={ uCount=4, type=TS_RT_PLAIN }, *pulRunInfoOut=803564464, *pacpNext=803565000)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetText(acpStart=0, acpEnd=-1, pchPlain=0x7ffb2fe56bc0, cchPlainReq=128, pcchPlainOut=0x19c00c440, prgRunInfo=0x7ffb2fe56cc0, ulRunInfoReq=33, pulRunInfoOut=0x7ffb2fe56bb0, pacpNext=0x7ffb2fe56dc8), mComposition={ mStart=1, mString.Length()=1, IsComposing()=true }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::LockedContent(): mLockedContent={ mText="anbc" (Length()=4), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=1 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetText() succeeded: pcchPlainOut=0x19c00c440, *prgRunInfo={ uCount=4, type=TS_RT_PLAIN }, *pulRunInfoOut=803564464, *pacpNext=803565000)
> 0[19ca0e800]: TSF: 0x1b119db00 Unlocked (TS_LF_READWRITE) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::FlushPendingActions() flushing COMPOSITION_START={ mSelectionStart=1, mSelectionLength=0 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::FlushPendingActions() dispatching compositionstart event...
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::FlushPendingActions() flushing COMPOSITION_UPDATE={ mData="n", mRanges=0x1a7a350c0, mRanges->Length()=2 }
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::FlushPendingActions(), dispatching compositionchange event...
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::MaybeFlushPendingNotifications(), putting off flushing pending notifications due to being dispatching events...
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RequestLock() succeeded: *phrSession=S_OK
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::GetStatus(pdcs=0x19c00cfc0)
> 0[19ca0e800]: TSF: 0x1b119db00 TSFTextStore::RequestLock(dwLockFlags=TS_LF_READWRITE, phrSession=0x19c00d018), mLock=not-specified
Hmm, according to this log, this is a bug of MS Pinyin. It doesn't specify correct range at calling ITextStore::SetText()...
Assignee | ||
Comment 8•9 years ago
|
||
Okay, I can reproduce same bug with MS Wubi, MS Changjie and MS Quick. They must base on same code.
Assignee | ||
Comment 9•9 years ago
|
||
> 0[5451a0e800]: TSF: 0x5461b14100 Locking (TS_LF_READWRITE) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::QueryInsert(acpTestStart=1, acpTestEnd=2, cch=0, pacpResultStart=0x7ffb00000001, pacpResultEnd=0x5400000002)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::QueryInsert() succeeded: *pacpResultStart=1, *pacpResultEnd=2)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::OnStartComposition(pComposition=0x545f36ede0, pfOk=0x5450ebd660), mComposition.mView=0x0
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::RecordCompositionStartAction(aComposition=0x545f36ede0, aRange=0x545f36e248, aPreserveSelection=false), mComposition.mView=0x0
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::RecordCompositionStartAction(aComposition=0x545f36ede0, aStart=1, aLength=1, aPreserveSelection=false), mComposition.mView=0x0
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=1, acpEnd=2 (length=1), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetCurrentText(): retrieving text from the content...
> 0[5451a0e800]: IMECO: 0x5461b13a00 IMEContentObserver::HandleQueryContentEvent(aEvent={ mMessage=NS_QUERY_TEXT_CONTENT })
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::LockedContent(): mLockedContent={ mText="abc" (Length()=3), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=4294967295 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=1, acpEnd=2 (length=1), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::RecordCompositionStartAction() succeeded: mComposition={ mStart=1, mString.Length()=1, mSelection={ acpStart=1, acpEnd=2, style.ase=TS_AE_END, style.fInterimChar=false } }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::OnStartComposition() succeeded
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::SetText(dwFlags=not-specified, acpStart=1, acpEnd=2, pchText=0x5451776a40 "n", cch=1, pChange=0x5450ebd638), mComposition.IsComposing()=true
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::SetSelectionInternal(pSelection={ acpStart=1, acpEnd=2, style={ ase=TS_AE_END, fInterimChar=false} }, aDispatchCompositionChangeEvent=false), mComposition.IsComposing()=true
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=1, acpEnd=2 (length=1), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::InsertTextAtSelectionInternal(aInsertStr="n", aTextChange=0x5450ebd638), IsComposing=true
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=1, acpEnd=2 (length=1), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::LockedContent(): mLockedContent={ mText="abc" (Length()=3), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=4294967295 }
> 0[5451a0e800]: TSF: 0x5461b141a0 TSFTextStore::Content::ReplaceTextWith(aStart=1, aLength=1, aReplaceString="n"), mComposition={ mStart=1, mString="n" }, mLastCompositionString="", mMinTextModifiedOffset=4294967295, firstDifferentOffset=1
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::InsertTextAtSelectionInternal() succeeded: mWidget=0x546040f000, mWidget->Destroyed()=false, aTextChange={ acpStart=1, acpOldEnd=2, acpNewEnd=2 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::SetText() succeeded: pChange={ acpStart=1, acpOldEnd=2, acpNewEnd=2 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetText(acpStart=0, acpEnd=-1, pchPlain=0x7ffb2fe56bc0, cchPlainReq=128, pcchPlainOut=0x5450ebd050, prgRunInfo=0x7ffb2fe56cc0, ulRunInfoReq=33, pulRunInfoOut=0x7ffb2fe56bb0, pacpNext=0x7ffb2fe56dc8), mComposition={ mStart=1, mString.Length()=1, IsComposing()=true }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::LockedContent(): mLockedContent={ mText="anc" (Length()=3), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=1 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetText() succeeded: pcchPlainOut=0x5450ebd050, *prgRunInfo={ uCount=3, type=TS_RT_PLAIN }, *pulRunInfoOut=803564464, *pacpNext=803565000)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::OnUpdateComposition(pComposition=0x545f36ede0, pRangeNew=0x0), mComposition.mView=0x545f36ede0
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::OnUpdateComposition() succeeded but not complete
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::SetSelection(ulCount=1, pSelection=5450ebd618 { acpStart=2, acpEnd=2, style={ ase=TS_AE_END, fInterimChar=false } }), mComposition.IsComposing()=true
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::SetSelectionInternal(pSelection={ acpStart=2, acpEnd=2, style={ ase=TS_AE_END, fInterimChar=false} }, aDispatchCompositionChangeEvent=true), mComposition.IsComposing()=true
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::RestartCompositionIfNecessary(aRangeNew=0x0), mComposition.mView=0x545f36ede0
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::RestartCompositionIfNecessary(), range=1-2, mComposition={ mStart=1, mString.Length()=1 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::RestartCompositionIfNecessary() succeeded
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::RecordCompositionUpdateAction(), mComposition={ mView=0x545f36ede0, mStart=1, mString="n" (Length()=1) }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::RecordCompositionUpdateAction() succeeded
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::SetSelection() succeeded
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetSelection(ulIndex=4294967295, ulCount=1, pSelection=0x5450ebd920, pcFetched=0x5450ebde14)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetSelection() succeeded
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetStatus(pdcs=0x5450ebded8)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetActiveView(pvcView=0x5450ebde08)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetActiveView() succeeded: *pvcView=1
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetWnd(vcView=1, phwnd=0x5450ebde38), mWidget=0x546040f000
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetWnd() succeeded: *phwnd=0x101762
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetStatus(pdcs=0x5450ebdcf8)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetSelection(ulIndex=4294967295, ulCount=1, pSelection=0x5450ebd820, pcFetched=0x5450ebdd00)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetSelection() succeeded
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetActiveView(pvcView=0x5450ebdc58)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetActiveView() succeeded: *pvcView=1
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetTextExt(vcView=1, acpStart=2, acpEnd=2, prc=0x5450ebdd20, pfClipped=0x5450ebdcf0), mDeferNotifyingTSF=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetTextExt() hacked the offsets for TIP acpStart=1, acpEnd=1
> 0[5451a0e800]: IMECO: 0x5461b13a00 IMEContentObserver::HandleQueryContentEvent(aEvent={ mMessage=NS_QUERY_TEXT_RECT })
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetScreenExtInternal()
> 0[5451a0e800]: IMECO: 0x5461b13a00 IMEContentObserver::HandleQueryContentEvent(aEvent={ mMessage=NS_QUERY_EDITOR_RECT })
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetScreenExtInternal() succeeded: aScreenExt={ left=1346, top=340, right=1511, bottom=360 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetTextExt() succeeded: *prc={ left=1353, top=340, right=1355, bottom=360 }, *pfClipped=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetActiveView(pvcView=0x5450ebdcc8)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetActiveView() succeeded: *pvcView=1
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetScreenExt(vcView=1, prc=0x5450ebdd30)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetScreenExtInternal()
> 0[5451a0e800]: IMECO: 0x5461b13a00 IMEContentObserver::HandleQueryContentEvent(aEvent={ mMessage=NS_QUERY_EDITOR_RECT })
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetScreenExtInternal() succeeded: aScreenExt={ left=1346, top=340, right=1511, bottom=360 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetScreenExt() succeeded: *prc={ left=1346, top=340, right=1511, bottom=360 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetSelection(ulIndex=4294967295, ulCount=1, pSelection=0x5450ebd960, pcFetched=0x5450ebded8)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetSelection() succeeded
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetText(acpStart=0, acpEnd=-1, pchPlain=0x7ffb2fe56bc0, cchPlainReq=128, pcchPlainOut=0x5450ebd770, prgRunInfo=0x7ffb2fe56cc0, ulRunInfoReq=33, pulRunInfoOut=0x7ffb2fe56bb0, pacpNext=0x7ffb2fe56dc8), mComposition={ mStart=1, mString.Length()=1, IsComposing()=true }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::LockedContent(): mLockedContent={ mText="anc" (Length()=3), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=1 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetText() succeeded: pcchPlainOut=0x5450ebd770, *prgRunInfo={ uCount=3, type=TS_RT_PLAIN }, *pulRunInfoOut=803564464, *pacpNext=803565000)
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetText(acpStart=0, acpEnd=-1, pchPlain=0x7ffb2fe56bc0, cchPlainReq=128, pcchPlainOut=0x5450ebd6b0, prgRunInfo=0x7ffb2fe56cc0, ulRunInfoReq=33, pulRunInfoOut=0x7ffb2fe56bb0, pacpNext=0x7ffb2fe56dc8), mComposition={ mStart=1, mString.Length()=1, IsComposing()=true }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::CurrentSelection(): acpStart=2, acpEnd=2 (length=0), reverted=false
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::LockedContent(): mLockedContent={ mText="anc" (Length()=3), mLastCompositionString="" (Length()=0), mMinTextModifiedOffset=1 }
> 0[5451a0e800]: TSF: 0x5461b14100 TSFTextStore::GetText() succeeded: pcchPlainOut=0x5450ebd6b0, *prgRunInfo={ uCount=3, type=TS_RT_PLAIN }, *pulRunInfoOut=803564464, *pacpNext=803565000)
> 0[5451a0e800]: TSF: 0x5461b14100 Unlocked (TS_LF_READWRITE) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
If we do hack the result of ITextStoreACP::QueryInsert(), MS Pinyin works fine. So, the TIPs sets the result of QueryInsert() to SetText(). Therefore, MS Pinyin ignores the selection.
jimm:
Do you know some people of MS who are good people to report this bug? This bug exists in MS Pinyin, MS Wubi, MS Changjie and MS Quick on Win10 and Win8.1.
Flags: needinfo?(jmathies)
Comment hidden (spam) |
Assignee | ||
Comment 11•9 years ago
|
||
Er, perhaps, I'm wrong about the comment 10. SetText() should be available if OnStartComposition() has already been called.
Assignee | ||
Updated•9 years ago
|
Summary: [TSF] Selected text isn't replaced with composition string when you use MS Pinyin on Win10 → [TSF] Selected text isn't replaced with composition string when you use MS Pinyin, MS Wubi, MS Changjie and MS Quick on Win8.1 and Win10
Assignee | ||
Comment 12•9 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=06b518d1ef1e
Assignee | ||
Comment 13•9 years ago
|
||
Probably, I found the counter part of ITextStoreACP::QueryInsert(), that must be ITfRange::AdjustForInsert(): https://msdn.microsoft.com/en-us/library/windows/desktop/ms628914%28v=vs.85%29.aspx According to this document, the method shouldn't be called when TIP starts composition at selected range. So, I believe that this is a bug of the Chinese TIPs.
Assignee | ||
Comment 14•9 years ago
|
||
When we land the patch to beta, we need to uplift the patch (only part.1) of bug 1050644.
Depends on: 1050644
Assignee | ||
Comment 15•9 years ago
|
||
[Tracking Requested - why for this release]: Because this bug must be pretty annoying for Chinese (both Transitional and Simplified) IME users. This is a bug of the IMEs, but we can hack it only when one of them is active. So, this can be fixed safely.
Assignee | ||
Comment 16•9 years ago
|
||
According to the above investigation result, we should return specified range as result from ITextStore::QueryInsert(). This should work safe because it runs only when the active TIP is one of them. Honestly, I wanted to hack after OnStartComposition() because QueryInsert() *might* be called other purpose. However, I think that this must be safe because this should be called only when if TIP wants to start composition without selected range. I don't know such feature of Chinese TIPs and even if they have such feature, the handling of the result is probably same as this. I tested this patch on Win10-Ja, Win8.1-zh-CN, Win8.1-zh-TW.
Attachment #8657044 -
Flags: review?(VYV03354)
Assignee | ||
Comment 17•9 years ago
|
||
If we can uplift the fix, we need to uplift this patch landed by bug 1050644. This patch allows to check if the active TIP is one of the Chinese TIPs.
Assignee | ||
Comment 18•9 years ago
|
||
This is same patch but for beta.
Attachment #8657047 -
Flags: review?(VYV03354)
Assignee | ||
Comment 19•9 years ago
|
||
> Honestly, I wanted to hack after OnStartComposition() because QueryInsert() *might* be called other
> purpose. However, I think that this must be safe because this should be called only when if TIP wants
> to start composition without selected range.
I forgot to mention the reason why I don't do so. I tried the approach first. However, it needs a lot of methods and we need to hack at least 3 methods and check the pending action arrays to ensure that each method is called in this case. So, the patch became much complicated and too big. Therefore, I changed my mind. The simpler patch may be allowed to uplift, but if it's complicated, not so.
Updated•9 years ago
|
Attachment #8657044 -
Flags: review?(VYV03354) → review+
Updated•9 years ago
|
Attachment #8657047 -
Flags: review?(VYV03354) → review+
Assignee | ||
Comment 20•9 years ago
|
||
url: https://hg.mozilla.org/integration/mozilla-inbound/rev/06c35ae9bc22874fdbc811aed0181063502efeca changeset: 06c35ae9bc22874fdbc811aed0181063502efeca user: Masayuki Nakano <masayuki@d-toybox.com> date: Fri Sep 04 20:55:09 2015 +0900 description: Bug 1199997 TSFTextStore::QueryInsert() should return specified range if the TIP is one of buggy Chinese TIPs of Microsoft r=emk
Comment 21•9 years ago
|
||
Tracking for 41+. It's getting late in the beta cycle but we still may want to take this on beta (with the patch from bug 1050644)
tracking-e10s:
--- → ?
https://hg.mozilla.org/mozilla-central/rev/06c35ae9bc22
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla43
Assignee | ||
Comment 23•9 years ago
|
||
Comment on attachment 8657044 [details] [diff] [review] TSFTextStore::QueryInsert() should return specified range if the TIP is one of buggy Chinese TIPs of Microsoft Approval Request Comment [Feature/regressing bug #]: New bug of TSF mode, but not ours, the MS's IME's bug. They use wrong API to start composition. [User impact if declined]: Chinese language users (both Simplified Chinese and Traditional Chinese) cannot replace selected text with input string via IME. [Describe test coverage new/current, TreeHerder]: Landed on m-c. I manually tested this bug on Win10 Ja, Win-8.1 zh-CN, zh-TW. [Risks and why]: This patch changes the behavior of an API which is used by IME only when one of the Microsoft's Chinese IME is active. So, the risk must be low. [String/UUID change made/needed]: Nothing.
Attachment #8657044 -
Flags: approval-mozilla-aurora?
Assignee | ||
Comment 24•9 years ago
|
||
Comment on attachment 8657046 [details] [diff] [review] part.0 Add methods to check whether the active TIP is Chinese TIP which deosn't show candidate window in e10s mode (r=emk) Approval Request Comment [Feature/regressing bug #]: See above. [User impact if declined]: See above. [Describe test coverage new/current, TreeHerder]: This comes from bug 1050644. So, very long time, this is tested on m-c and aurora. [Risks and why]: Really low. This patch allows to check if the active IME is the MS's Chinese IME. [String/UUID change made/needed]: Nothing.
Attachment #8657046 -
Flags: approval-mozilla-beta?
Assignee | ||
Comment 25•9 years ago
|
||
Comment on attachment 8657047 [details] [diff] [review] part.1 nsTextStore::QueryInsert() should return specified range if the TIP is one of buggy Chinese TIPs of Microsoft Approval Request Comment [Feature/regressing bug #]: See above. [User impact if declined]: See above. [Describe test coverage new/current, TreeHerder]: See above (this is just merged with beta tree, not changed logically from the patch for m-c and aurora). [Risks and why]: See above comment which is the request for Aurora. [String/UUID change made/needed]: Nothing.
Attachment #8657047 -
Flags: approval-mozilla-beta?
Masayuki, is this an issue only in e10s mode? If so, given that e10s is not enabled by default in FF41, I do not think we should uplift this to Beta.
Flags: needinfo?(masayuki)
Assignee | ||
Comment 27•9 years ago
|
||
(In reply to Ritu Kothari (:ritu) from comment #26) > Masayuki, is this an issue only in e10s mode? If so, given that e10s is not > enabled by default in FF41, I do not think we should uplift this to Beta. No, this is reproduced without e10s, unfortunately.
Flags: needinfo?(masayuki)
Comment 28•9 years ago
|
||
Comment on attachment 8657044 [details] [diff] [review] TSFTextStore::QueryInsert() should return specified range if the TIP is one of buggy Chinese TIPs of Microsoft OK, let's take it.
Attachment #8657044 -
Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Fushan, could you please verify this fix works as expected on Nightly build from 09-05 or later? Thanks in advance.
Flags: needinfo?(qydwhotmail)
Comment on attachment 8657046 [details] [diff] [review] part.0 Add methods to check whether the active TIP is Chinese TIP which deosn't show candidate window in e10s mode (r=emk) Since this fix is isolated to TSF, it seems low risk to uplift to Beta41.
Attachment #8657046 -
Flags: approval-mozilla-beta? → approval-mozilla-beta+
Comment on attachment 8657047 [details] [diff] [review] part.1 nsTextStore::QueryInsert() should return specified range if the TIP is one of buggy Chinese TIPs of Microsoft Please see my previous comment.
Attachment #8657047 -
Flags: approval-mozilla-beta? → approval-mozilla-beta+
Comment 33•9 years ago
|
||
https://hg.mozilla.org/releases/mozilla-beta/rev/e786abc03fb7 https://hg.mozilla.org/releases/mozilla-beta/rev/452b638e5348
Updated•9 years ago
|
Flags: qe-verify+
Updated•9 years ago
|
Flags: qe-verify+
Comment 35•9 years ago
|
||
> jimm:
>
> Do you know some people of MS who are good people to report this bug? This
> bug exists in MS Pinyin, MS Wubi, MS Changjie and MS Quick on Win10 and
> Win8.1.
I do not, davidb might.
Flags: needinfo?(jmathies)
Assignee | ||
Comment 36•9 years ago
|
||
(In reply to Jim Mathies [:jimm] from comment #35) > > jimm: > > > > Do you know some people of MS who are good people to report this bug? This > > bug exists in MS Pinyin, MS Wubi, MS Changjie and MS Quick on Win10 and > > Win8.1. > > I do not, davidb might. davidb: Do you have a channel to report bugs of Microsoft's IMEs? We need to report Chinese MS-IME's bug (this bug) and Japanese MS-IME's bug (bug 1204523).
Flags: needinfo?(dbolter)
Comment 37•9 years ago
|
||
(In reply to Masayuki Nakano (:masayuki) (Mozilla Japan) (Offline: 9/21-23, prehaps, not so active: 9/24, 9/25) from comment #36) > (In reply to Jim Mathies [:jimm] from comment #35) > > > jimm: > > > > > > Do you know some people of MS who are good people to report this bug? This > > > bug exists in MS Pinyin, MS Wubi, MS Changjie and MS Quick on Win10 and > > > Win8.1. > > > > I do not, davidb might. > > davidb: Do you have a channel to report bugs of Microsoft's IMEs? We need to > report Chinese MS-IME's bug (this bug) and Japanese MS-IME's bug (bug > 1204523). I emailed my main contact earlier today. I'll leave the needinfo while I wait.
Comment 38•9 years ago
|
||
OK, I don't have an inside option. Here's the reply: "If the user has Windows 10, the best feedback mechanism is the Windows 10 feedback app. If not, Microsoft.com/connect is the best way to report issues. Someone at Mozilla may have access to our partner reporting system, so that would be another path. They all end up in the same database eventually." So Masayuki I think the Windows 10 feedback app is a good start.
Flags: needinfo?(dbolter)
Assignee | ||
Comment 39•9 years ago
|
||
Thank you, davidb. I reported this bug to MS via Windows Feedback. Windows-Feedback:?contextid=330&feedbackid=3a8e34bf-b0c5-40b5-8d78-e71accbb8fda&form=1&src=2
You need to log in
before you can comment on or make changes to this bug.
Description
•