JDK-6252674 : WinXP: Language bar got turned off (disappeared from desktop) after switching to java input method
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt:i18n
  • Affected Version: 1.4.1,5.0u6,6
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_xp,windows_vista
  • CPU: x86
  • Submitted: 2005-04-08
  • Updated: 2010-04-02
  • Resolved: 2005-05-23
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6
6 b38Fixed
Related Reports
Duplicate :  
Duplicate :  
Relates :  
Description
Language bar got turned off (disappeared from desktop) after switching to java input method.

To reproduce the bug:
1. On a WindowsXP, click on Control Panel, select Regional and Language Options,select Languages tab, click on Details..., click on Language Bar...,
check "Show the Language bar on the desktop", hit OK, OK, OK
2. Get CityIM.jar or Wubi.jar and put it into jre/lib/ext
3. On Japanese locale, bring the Notepad demo and input characters with the native system im.
4. Switch to Wubi or City IM and try to input some characters.
5. Notice that the language bar disappeared from desktop now.
6. Repeat step 1, you'll notice that "Show the Language bar on the desktop" is unchecked now

The Language bar status shouldn't be changed by switching between java input method and native input method; it should be only deactivated.
###@###.### 2005-04-08 17:19:47 GMT
###@###.### 2005-04-08 17:29:40 GMT

Comments
EVALUATION Can reproduce it and will investigate further to see what we can do. ###@###.### 2005-04-08 21:42:03 GMT When the input method is switched from native input method to the Java input method, InputContext.changeInputMethod is called, during this call, WInputMethod.hideWindow is called to close any windows this input method opened. As a result, WM_IME_CONTROL with IMC_CLOSESTATUSWINDOW is sent to the default input method window handle. That is why the lauguage bar gets closed as well. One of the bad thing for the Windows language bar is once it is closed due to the above sent message, it is gone for good. The user has to go to the Control Panel->Regional Settings to open it again. This is painful and not user friendly at all. So we have to workaround this in our side. There are 2 senarios we should pay attention in order to make the language bar working properly. 1. When the native input method is switched out and then switched back. We have to send message to the default input method window handler to open the status explicitly. 2. If after the native input method is switched out and never gets switched back, in this case, we have to ask the WInputMethod to explicitly restore the status window. InputContext.removeNotify is called when the component has been removed from its containment hierarchy, so we could use this as a hook to call into WInputMethod to restore the status window. This above description does not apply for Solaris since we don't draw the status ourselves there and we don't have control over it once it has been displayed. ###@###.### 2005-04-19 22:34:38 GMT
08-04-2005