Closed
Bug 1468917
Opened 6 years ago
Closed 6 years ago
When the ATOK2016 candidate window pops up, it flickers if browser in maximized size mode
Categories
(Core :: Widget: Win32, defect)
Tracking
()
RESOLVED
FIXED
mozilla63
People
(Reporter: alice0775, Assigned: masayuki)
Details
(5 keywords)
Attachments
(2 files)
59 bytes,
text/x-review-board-request
|
m_kato
:
review+
lizzard
:
approval-mozilla-beta+
|
Details |
59 bytes,
text/x-review-board-request
|
m_kato
:
review+
lizzard
:
approval-mozilla-beta+
|
Details |
Reproducible: always
Steps to Reproduce:
1. Maximize browser
2. Open data:text/html,<input> or any input field and select it
3. IME on
4. Type someting
5. Press Conversion key until candidate windou popup
Actual Results:
When the ATOK2016 candidate window pops up.
It appears at corner of screen for a moment. And then it moves to the correct position.
Expected Results:
Not flicker
Disabling e10s seems to fix the problem.
Other Browser does not have such annoying problem.
Reporter | ||
Updated•6 years ago
|
Keywords: inputmethod
Reporter | ||
Updated•6 years ago
|
Summary: When the ATOK2016 candidate window pops up, it flickers → When the ATOK2016 candidate window pops up, it flickers if browser in maximized size mode
Assignee | ||
Comment 1•6 years ago
|
||
Hmm, cannot reproduce.
1. Is it recent regression?
2. Do you use InsiderPreview build in Fast ring?
3. Did you change intl.tsf.*?
4. Do you enable ATOKインサイト (設定 -> 入力・変換 -> 変換補助 -> 一時文書学習候補を表示する) and enable a11y feature of Firefox?
5. Do you see composition string when candidate window is not positioned correctly?
Sounds like the symptom is, when you need the candidate window, remote process hasn't notified the main process of content information such as character rectangles of composition string, caret position, etc. So, this could occur when the child process too busy or you typed really fast like machine. Anyway, if so, composition string shouldn't be shown in the editor since if remote process received a composition event at least once, remote process should've already sent layout information to the main process.
Flags: needinfo?(alice0775)
Reporter | ||
Comment 2•6 years ago
|
||
(In reply to Masayuki Nakano [:masayuki] (JST, +0900) from comment #1)
> Hmm, cannot reproduce.
>
> 1. Is it recent regression?
No. at least it is replroduced on Firefox45 if e10s forcibly enabled
> 2. Do you use InsiderPreview build in Fast ring?
No. version 1803 os build 17134.112
> 3. Did you change intl.tsf.*?
No.
> 4. Do you enable ATOKインサイト (設定 -> 入力・変換 -> 変換補助 -> 一時文書学習候補を表示する) and enable
> a11y feature of Firefox?
Yes.
Disabled a11y does not help.
Disabled ATOKインサイト does not help.
> 5. Do you see composition string when candidate window is not positioned
> correctly?
>
Yes. the composition string position seems to be ok.
Flags: needinfo?(alice0775)
Reporter | ||
Comment 3•6 years ago
|
||
Interestingly,
this problem only occurs in maximized browser.
Not occur in normal size-mode and fullscreen size-mode.
However even in normal size-mode, the problem occurs if the top-left corner of the browser is outside of monitor screen.
Assignee | ||
Comment 4•6 years ago
|
||
Alice-san:
Thank you for the information, and sorry for the delay to reply due to the business trip.
I'm still trying to reproduce this bug, but not yet reproducible.
According to comment 3, sounds like a bug around multi-monitor.
Do you use 2 or more displays? If yes, do you use GPU driver specific feature like treating all displays as part of a desktop?
Do you use virtual desktop feature of Windows 10? Or something similar software of 3rd party?
Flags: needinfo?(alice0775)
Reporter | ||
Comment 5•6 years ago
|
||
(In reply to Masayuki Nakano [:masayuki] (JST, +0900) from comment #4)
> Do you use 2 or more displays? If yes, do you use GPU driver specific
> feature like treating all displays as part of a desktop?
No. I use only 1 monitor.
>
> Do you use virtual desktop feature of Windows 10? Or something similar
> software of 3rd party?
No.
I can also reproduce with new account of Windows10 Home x64 Ver1803 Build17134.112(i.e. default setting of windows and Atok2016).
Flags: needinfo?(alice0775)
Assignee | ||
Comment 6•6 years ago
|
||
Okay, it seems that I succeeded to reproduce this bug on VM which does not have 2nd display nor 2nd virtual desktop.
As far as I've tested, this looks like a bug of hack of ATOK. If we don't create native caret for ATOK (with disabling intl.tsf.hack.atok.create_native_caret), I cannot reproduce this bug. How about you, Alice-san?
Flags: needinfo?(alice0775)
Reporter | ||
Comment 7•6 years ago
|
||
(In reply to Masayuki Nakano [:masayuki] (JST, +0900) from comment #6)
> Okay, it seems that I succeeded to reproduce this bug on VM which does not
> have 2nd display nor 2nd virtual desktop.
>
> As far as I've tested, this looks like a bug of hack of ATOK. If we don't
> create native caret for ATOK (with disabling
> intl.tsf.hack.atok.create_native_caret), I cannot reproduce this bug. How
> about you, Alice-san?
I confirmed that I cannot reproduce that problem anymore by setting intl.tsf.hack.atok.create_native_caret=false.
Flags: needinfo?(alice0775)
Assignee | ||
Comment 8•6 years ago
|
||
Thank you. Perhaps, we should stop doing the hack for ATOK 2016 and later since I don't see any problem with disabling it but I see side-effect of this hack mentioned in the following article.
https://d-toybox.com/studio/weblog/show.php?id=2018060200#ATOK2017
FYI: I don't reproduce this bug with ATOK 2017 nor ATOK 2015.
Assignee: nobody → masayuki
Status: NEW → ASSIGNED
Assignee | ||
Comment 9•6 years ago
|
||
Reporter | ||
Comment 10•6 years ago
|
||
(In reply to Alice0775 White from comment #7)
> (In reply to Masayuki Nakano [:masayuki] (JST, +0900) from comment #6)
> > Okay, it seems that I succeeded to reproduce this bug on VM which does not
> > have 2nd display nor 2nd virtual desktop.
> >
> > As far as I've tested, this looks like a bug of hack of ATOK. If we don't
> > create native caret for ATOK (with disabling
> > intl.tsf.hack.atok.create_native_caret), I cannot reproduce this bug. How
> > about you, Alice-san?
>
>
> I confirmed that I cannot reproduce that problem anymore by setting
> intl.tsf.hack.atok.create_native_caret=false.
I think the side-effect is more annoying than this bug, because, the flickering occurs every next candidate is selected with arrowkey in the candidate window.
I think that WONTFIX is best for this bug unless the side effect is resolved.
Assignee | ||
Comment 11•6 years ago
|
||
No, the side-effect appears when we *do* the hack, and not doing the hack *fixes* this bug.
Assignee | ||
Comment 12•6 years ago
|
||
Ah, but another side-effect appears without the hack. That is the candidate window may appear at first clause even when second or later clause is being converted. I'll try to look for preventing this issue.
Assignee | ||
Comment 13•6 years ago
|
||
Reporter | ||
Comment 14•6 years ago
|
||
FYI, The try build in comment#13 works as expected(no flicker) on win64 opt and win32 opt build with/without e10s on Windows10.
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Assignee | ||
Comment 17•6 years ago
|
||
Thank you for your test. I also don't see any problem with the build even with ATOK 2015, ATOK 2016, ATOK 2017 and the latest ATOK of ATOK Passport. I think the patches are enough safe.
Comment 18•6 years ago
|
||
mozreview-review |
Comment on attachment 8987045 [details]
Bug 1468917 - part 1: Make TSFTextStore not create native caret if ATOK 2016 is active
https://reviewboard.mozilla.org/r/252288/#review259088
Attachment #8987045 -
Flags: review?(m_kato) → review+
Comment 19•6 years ago
|
||
mozreview-review |
Comment on attachment 8987046 [details]
Bug 1468917 - part 2: TSFTextStore::GetTextExt() shouldn't return TS_E_NOLAYOUT when ATOK retrieves text rects *in* the composition string
https://reviewboard.mozilla.org/r/252290/#review259090
Attachment #8987046 -
Flags: review?(m_kato) → review+
Comment 20•6 years ago
|
||
Pushed by masayuki@d-toybox.com:
https://hg.mozilla.org/integration/autoland/rev/6b99a97dc402
part 1: Make TSFTextStore not create native caret if ATOK 2016 is active r=m_kato
https://hg.mozilla.org/integration/autoland/rev/e3179eede59d
part 2: TSFTextStore::GetTextExt() shouldn't return TS_E_NOLAYOUT when ATOK retrieves text rects *in* the composition string r=m_kato
Comment 21•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/6b99a97dc402
https://hg.mozilla.org/mozilla-central/rev/e3179eede59d
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
status-firefox63:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
Updated•6 years ago
|
Comment 22•6 years ago
|
||
Masayuki, is it ok to let this change ride to release with 63, or do you think it is good for uplift to 62? Thanks!
Flags: needinfo?(masayuki)
Assignee | ||
Comment 23•6 years ago
|
||
(In reply to Liz Henry (:lizzard) (needinfo? me) from comment #22)
> Masayuki, is it ok to let this change ride to release with 63, or do you
> think it is good for uplift to 62? Thanks!
I was thinking as the latter. However, the fix improves UX of the latest version of ATOK and the risk is really low. Sure. I'll request to uplift.
Flags: needinfo?(masayuki)
Assignee | ||
Comment 24•6 years ago
|
||
Comment on attachment 8987045 [details]
Bug 1468917 - part 1: Make TSFTextStore not create native caret if ATOK 2016 is active
Approval Request Comment
[Feature/Bug causing the regression]:
Regression of e10s.
[User impact if declined]:
ATOK users see annoying flicker of candidate window.
[Is this code covered by automated tests?]:
No since we don't have any automated test framework for native IME handler.
[Has the fix been verified in Nightly?]:
Yes.
[Needs manual test from QE? If yes, steps to reproduce]:
No, ATOK is 3rd party's IME, not free. So, it's difficult to create environment.
[List of other uplifts needed for the feature/fix]:
The following patch.
[Is the change risky?]:
No.
[Why is the change risky/not risky?]:
Background:
ATOK is a 3rd party's Japanese IME since many years ago. We've create Windows' native caret for some Chinese IMEs when Win9x, 2k and XP since they referred native caret position to show their reading window. I'm not sure the exact version number, ATOK started to refer the native caret position only when active window is Gecko. Therefore, for supporting old ATOK (2011 - 2015), we need to keep native caret even after we supported TSF on Vista and later.
On the other hand, at ATOK 2016, they probably rewrite the code to decide their candidate window. They still refer native caret if there is, however, it includes at least this bug. Additionally, if there is no native caret, they decide the position only with API of TSF.
So, we should drop ATOK 2016 from the blacklist of ATOK which require native caret so that this patch only do it. Note that ATOK 2017 and "ATOK" (starting 2018, there is only subscription license. So, the year is dropped from the product name).
[String changes made/needed]:
No.
Attachment #8987045 -
Flags: approval-mozilla-beta?
Assignee | ||
Comment 25•6 years ago
|
||
Comment on attachment 8987046 [details]
Bug 1468917 - part 2: TSFTextStore::GetTextExt() shouldn't return TS_E_NOLAYOUT when ATOK retrieves text rects *in* the composition string
Approval Request Comment
[Feature/Bug causing the regression]:
Regression of the previous patch for ATOK 2016 users.
Regression of bug 1273510 for ATOK 2017 and the latest ATOK users.
[User impact if declined]:
Candidate window of ATOK may dance around proper position when user is choosing a word from candidate window.
[Is this code covered by automated tests?]:
No.
[Has the fix been verified in Nightly?]:
Yes.
[Needs manual test from QE? If yes, steps to reproduce]:
No.
[List of other uplifts needed for the feature/fix]:
The previous patch.
[Is the change risky?]:
No.
[Why is the change risky/not risky?]:
When there is no native caret, ATOK decides candidate window position only with API of TSF. However, the API is still buggy in the latest Win10 (it'll be fixed on the next Win10 update at this fall). Therefore, until remote process finishes reflow for the new composition string, we need to notify ATOK of fake position rather than an error code to notify IME of waiting next layout change notification from us.
At fixing bug 1273510, I thought ATOK always queries rectangle of whole composition string when there is no native caret. However, actually, ATOK may query rectangle between 2nd or later character and the last character of composition string. In this case, we return error code so that ATOK confused.
This patch makes us not return the error code to ATOK if ATOK queries rectangle of *part* of composition string.
[String changes made/needed]:
No.
FYI: ATOK 2016 and later's share in Nightly build testers who input Japanese text is about 6%.
Attachment #8987046 -
Flags: approval-mozilla-beta?
Assignee | ||
Comment 26•6 years ago
|
||
> FYI: ATOK 2016 and later's share in Nightly build testers who input Japanese text is about 6%.
Oops, I used wrong parameter, the correct number is about 11%.
Comment 27•6 years ago
|
||
Comment on attachment 8987045 [details]
Bug 1468917 - part 1: Make TSFTextStore not create native caret if ATOK 2016 is active
IME fix, verified in Nightly, let's uplift for beta 7.
Attachment #8987045 -
Flags: approval-mozilla-beta? → approval-mozilla-beta+
Updated•6 years ago
|
Attachment #8987046 -
Flags: approval-mozilla-beta? → approval-mozilla-beta+
Comment 28•6 years ago
|
||
bugherder uplift |
You need to log in
before you can comment on or make changes to this bug.
Description
•