Closed Bug 1237216 Opened 8 years ago Closed 8 years ago

[TSF] Unnecessary composition events are raised when typing Korean characters

Categories

(Core :: Widget: Win32, defect)

43 Branch
All
Windows
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla46
Tracking Status
firefox46 --- fixed

People

(Reporter: cmpark, Assigned: masayuki)

Details

(Keywords: inputmethod)

Attachments

(1 file)

User Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36

Steps to reproduce:

1. Typing Korean characters inside a div tag with content-editabled like below.
    <div>간</div>
2. Type a Korean character ('ㅏ' in this example) which can occur "compositionend" event.
    <div>가나</div>


Actual results:

When you type 'ㅏ', events will be raised like below.
  - compositionupdate ('가') -> compositionend ('가') -> compositionstart -> compositionend ('') -> compositionstart -> compositionupdate ('나')

  Unnecessary composition events are following after "compositionend" event for '가'.



Expected results:

Events might be raised like below.
  - compositionupdate ('가') -> compositionend ('가') -> compositionstart -> compositionupdate ('나')
Component: Untriaged → Event Handling
Product: Firefox → Core
It only happens when TFS is enabled.
Component: Event Handling → Widget: Win32
Summary: Unnecessary composition events are raised when typing Korean characters. → [TSF] Unnecessary composition events are raised when typing Korean characters
Assignee: nobody → masayuki
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
OS: Unspecified → Windows
Hardware: Unspecified → All
MS-IME for Korean behaves odd.

At typing a Hangul character which causes committing current composition and appending new Hangul character after that, it modifies composition range *before* notifying us of composition end. Therefore, before handling composition end, we record a restart composition with new range. However, this is ended by following end composition notification. This is the redundant compositionstart and compositionend events.

When we record a pending action for composition end, we should check if it's actually changes composition string. If it's not changed, we should remove the pending action from preceding composition start to current (composition end).
Attachment #8708885 - Flags: review?(VYV03354)
Attachment #8708885 - Flags: review?(VYV03354) → review+
https://hg.mozilla.org/mozilla-central/rev/73c6bdc7aa58
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla46
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: