Closed Bug 1243657 Opened 8 years ago Closed 8 years ago

[IMM] When there is only composition string in editor, canceling the composition causes painting caret at odd position (right-most of the editor)

Categories

(Core :: Spelling checker, defect)

All
Windows
defect
Not set
trivial

Tracking

()

RESOLVED FIXED
mozilla47
Tracking Status
firefox44 --- wontfix
firefox45 --- wontfix
firefox46 --- wontfix
firefox47 --- fixed
firefox-esr38 --- wontfix
firefox-esr45 --- ?

People

(Reporter: alice0775, Assigned: masayuki)

References

()

Details

(Keywords: inputmethod, regression, reproducible)

Attachments

(2 files)

The problem happens
1. Microsoft IME and Microsoft Office 2010 as well
2. TSF off
3. "半角英数" 入力モード
4. ESC key will move caret to the beginning of 1st line


Steps To Reproduce:
1. Choose MS-IME for default IME
2-1. Open "Microsoft IMEのプロパティ" > "全般"
2-2. Choose "半角英数" of 初期入力モード 
2-3. Switch tab "和英混在入力"
2-4. Turn on "英字をローマ字から漢字変換する(主に英語を入力する)" 
2-5. OK

4. Start Firefox with TSF off
5. Open web page incl. input field.
   e.g. data:text/html,<input type="text">
5. Forcus input field
6. Right click on the field. And Enable "Check Spelling"
7. IME on and Choose conversion mode to "半角英数(P)"
8. Type word and then [ESC]

Actual Results:
Caret jumps to the end of line

Expected Results:
Caret should be at the start of line

Regression window:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=13aa9ac1791e&tochange=4631a7474d8a

Regressed by: Bug 1077345
OS: Windows → Windows 7
I don't understand the STR well. Could you exmplain about #8?

I tried to type "abc" and then, type Escape key, then, the composition string is canceled normally.
(In reply to Masayuki Nakano [:masayuki] (Mozilla Japan) from comment #1)
> I don't understand the STR well. Could you exmplain about #8?
> 
> I tried to type "abc" and then, type Escape key, then, the composition
> string is canceled normally.

Yes, the composition string  is canceled, but caret jump to the end
Attached video screencast.wmv
MS-IME2012 and Google日本語入力(2.17.2400.0) on Windows8.1(VM) is affected.
MS-IME and Google日本語入力(2.17.2400.0) on Windows10 build11099(VM) is also affected.
Corrected. This occurs regardless of the IME input mode.  


Steps To Reproduce:
1. Start Firefox with TSF off
2. Open web page incl. input field.
   e.g. data:text/html,<input type="text">
3. Forcus input field
4. Right click on the field. And Enable "Check Spelling"
5. IME on
6. Type abc and then [ESC]
I have another question, do you reproduce this with <textarea> or something contenteditable element? I mean, this might be a bug related to autocomplete.
Flags: needinfo?(alice0775)
I cannot reproduce with [1],[2].

[1] data:text/html,<div contenteditable style="border:1px solid red;height:100px"></div>
[2] data:text/html,<textarea>
Flags: needinfo?(alice0775)
I will change the status to trivial, because there are no functioning problems except the caret position.
Severity: normal → trivial
Thank you very much. I can now reproduce this bug on both Win7 and Win10. But I'm still not sure what's the cause... (Why does this only occur with IMM???)
Assignee: nobody → masayuki
Status: NEW → ASSIGNED
Component: Widget: Win32 → Spelling checker
OS: Windows 7 → Windows
Hardware: Unspecified → All
Summary: [IMM32] ESC key will move caret to the end of line → [IMM] When there is only composition string in editor, canceling the composition causes painting caret at odd position (right-most of the editor)
This is a bug of spell checker.

mozInlineSpellStatus::InitForEditorChange() may be called with removed text node. This may occur at deleteSelection or insertIMEText. For the former, the method handles correctly. However, it doesn't assume insertIMEText deletes text node. If there is no text except composition string, canceling the composition may cause removing the text node. Then, |mAnchorRange->ComparePoint(aPreviousNode, aPreviousOffset, &cmpResult)| fails and failing InitForEditorChange() causes skipping CreateBogusNodeIfNeeded(), CreateTrailingBRIfNeeded() and CollapseSelectionToTrailingBRIfNeeded() in nsTextEditRules::AfterEdit(). This is the cause of odd caret position.

Although, I'm not sure if this bug isn't reproducible in TSF mode...
Attachment #8713467 - Flags: review?(ehsan)
Comment on attachment 8713467 [details] [diff] [review]
spellchecker should check if IME composition works as deleting whole text

Review of attachment 8713467 [details] [diff] [review]:
-----------------------------------------------------------------

Thanks!  Is it possible to add a test for this?
Attachment #8713467 - Flags: review?(ehsan) → review+
(In reply to :Ehsan Akhgari from comment #11)
> Thanks!  Is it possible to add a test for this?

Maybe, maybe not, because I don't understand the cause completely since this won't be reproduced with TSF mode... Anyway, I'll try to do it later when I have much time.
https://hg.mozilla.org/integration/mozilla-inbound/rev/e22bed8364ad9066dec0b619e77bcda503493d38
Bug 1243657 spellchecker should check if IME composition works as deleting whole text r=ehsan
https://hg.mozilla.org/mozilla-central/rev/e22bed8364ad
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla47
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: