Closed Bug 15496 Opened 26 years ago Closed 26 years ago

[PP][dogfood] IME bug-Japanese characters you are typing cannot be seen

Categories

(Core :: Internationalization, defect, P2)

Other
Linux
defect

Tracking

()

VERIFIED FIXED

People

(Reporter: teruko, Assigned: erik)

References

Details

(Keywords: inputmethod, Whiteboard: fix checked in 12/1)

In the Editor, when you type Japanese characters at the beginning of the first line, the character you type cannot be seen. I am using the Wnn4 and Kinput2. Steps of reproduce 1. Open the Editor by selecting the menu Task|Editor 2. Turn on the IME by Shift+Space 3. Move the cursor to at the beginnig of the first line, before "Here's the deal.." 4. Type some Japanese Notice that the Japanese characters you type are hidden. After you hit the enter, the Japanese character will show up. Tested 10-02 M10 Linux build.
*** Bug 15531 has been marked as a duplicate of this bug. ***
Tague, if I remember correctly, currently we only get the spot location back from the editor(?) when some text has been committed. However, we need the spot location in the beginning too, before any text has been typed. Do you have some ideas for addressing this?
I've actually changed that behavior to support XIM. Right now, you get the cursor x,y coordinate back as a reply from generating the BeginComposition and TextEvent messages. The x,y coordinate is translated back into absolute platform coordinates in the reply message. You can use this initial value to position the spot, which is how I've implemented candidate window position on Windows. Take a look at mozilla/widget/src/windows/nsWindow.cpp for an example in the current architecture. As far as future direction, I've been thinking of some kind of Input Method manager service that would serve as a bridge between the platform-dependent and cross platform editor code. The IME service would have various "observers" watch the state of IME-interesting data (cursor position, current font, focus) and maintain a private context for each of the know editors. This would also allow us to use a single IC/TSMDocuemtns/HIMC for multiple editor widgets if desired. I can sketch out some ideas in the newsgroup if people are interested, XIM seems to be the most demanding client, so if tajima-san has any particular ideas or requirements, I'd love to get some feedback.
Blocks: 15693
Status: NEW → RESOLVED
Closed: 26 years ago
Resolution: --- → FIXED
That is because the initial x, y location was not set to XIM. Thanks to Tague's input, Now the location can be got by dispatching a NS_COMPOSITION_START composing event and examinng a reply field for the event. Hence, the fix will be to get the location and set to XIM when a document window gets an input focus at OnFocusInSignal() in nsWidget.cpp.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Blocks: 16127
Priority: P3 → P2
Target Milestone: M11
Mark as M11 P2. Have you submit your fix to erik yet ?
Toshi, if this bug has been fixed, please mark it RESOLVED FIXED. If it is a duplicate of some other bug, please mark it RESOLVED DUPLICATE. If it has not been fixed, and you don't think you can fix it for M11 (deadline is 11/2 at 11:59pm), then please change the Target Milestone to something after M11.
I looked at http://lxr.mozilla.org/seamonkey/source/widget/src/gtk/nsWidget.cpp and I don't see the change for dispatching NS_COMPOSITION_START and examining the reply as suggested above. So it looks like the fix has not been applied. Should we move this to M12?
Target Milestone: M11 → M12
m12. let me know if a status change happens
Status: REOPENED → ASSIGNED
*** Bug 15520 has been marked as a duplicate of this bug. ***
Here are the fixes to set initial spotlocation problem by looking at ns_composition_start reply. The fix should solve 15520, too. This changes are made on top of cvs checkout I ran at 12pm of 11/08/99. Thanks to review and check-in if they work well and solve both 15520 and 15496. Index: nsGtkEventHandler.cpp =================================================================== RCS file: /cvsroot/mozilla/widget/src/gtk/nsGtkEventHandler.cpp,v retrieving revision 1.113 diff -c -r1.113 nsGtkEventHandler.cpp *** nsGtkEventHandler.cpp 1999/11/06 03:38:08 1.113 --- nsGtkEventHandler.cpp 1999/11/08 23:29:59 *************** *** 598,603 **** --- 598,605 ---- compEvent.compositionMessage = NS_COMPOSITION_START; aWin->DispatchEvent(&compEvent, *aStatus); + // set SpotLocation + aWin->SetXICSpotLocation(compEvent.theReply.mCursorPosition); return PR_TRUE; } *************** *** 797,802 **** --- 799,807 ---- } else { InitKeyPressEvent(event,p, kevent); win->OnKey(kevent); + nsEventStatus status; + composition_start(event, win, &status); + composition_end(event, win, &status); } } else { // for Home/End/Up/Down/Left/Right/PageUp/PageDown key InitKeyPressEvent(event,p, kevent); Index: nsWidget.cpp =================================================================== RCS file: /cvsroot/mozilla/widget/src/gtk/nsWidget.cpp,v retrieving revision 1.162 diff -c -r1.162 nsWidget.cpp *** nsWidget.cpp 1999/11/06 03:38:20 1.162 --- nsWidget.cpp 1999/11/08 23:29:59 *************** *** 1972,1977 **** --- 1972,1990 ---- if (gdkWindow) { gdk_im_begin ((GdkIC*)mIC, gdkWindow); + // set spot location + nsCompositionEvent compEvent; + nsEventStatus status; + compEvent.widget = (nsWidget*)this; + compEvent.point.x = 0; + compEvent.point.y = 0; + compEvent.time = 0; + compEvent.message = NS_COMPOSITION_START; + compEvent.eventStructType = NS_COMPOSITION_START; + compEvent.compositionMessage = NS_COMPOSITION_START; + DispatchEvent(&compEvent, status); + // set SpotLocation + SetXICSpotLocation(compEvent.theReply.mCursorPosition); } else {
Status: ASSIGNED → RESOLVED
Closed: 26 years ago26 years ago
Resolution: --- → FIXED
I checked in the above fixes.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
I tested this in 11-18-08 M12 Linux build. This still happen. Reproduciable steps have been changed. Steps of reproduce 1. Open the Editor by selecting the menu Task|Editor 2. Turn on the IME by Shift+Space 3. Move the cursor to at the beginnig of the first line 4. Type some Japanese Notice that the Japanese characters you type are hidden. After you hit the enter, the Japanese character will show up. Bug 15520 still happens, too. I need to reopen this.
Toshi, please don't do any more work on this until we all agree on the right approach. Frank has looked into supporting XIM's over-the-spot in Mozilla, but it currently looks very difficult (font, spot location, color, etc). So please wait until you get the go-ahead from Frank. Thanks.
This still happens at the beginning of first line in Composer and at the beginning of Text area. I tested 12-01-09 Linux build.
Summary: [PP] IME bug-Japanese characters you are typing cannot be seen → [PP][dogfood] IME bug-Japanese characters you are typing cannot be seen
I have a fix for this. (I set the initial Y coordinate to 14, since the font is set to *-16-*.)
Assignee: tajima → erik
Status: REOPENED → NEW
Whiteboard: have fix
Status: NEW → RESOLVED
Closed: 26 years ago26 years ago
Resolution: --- → FIXED
Whiteboard: have fix → fix checked in 12/1
Status: RESOLVED → VERIFIED
I verified this in 120608 Linux build.
You need to log in before you can comment on or make changes to this bug.