JDK-6575419 : Solaris : XSetICFoucs is not called with Java application at appropriate timing
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt:i18n
  • Affected Version:
    solaris_10u2,solaris_10u7,solaris_11,6 solaris_10u2,solaris_10u7,solaris_11,6
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS:
    solaris,solaris_nevada,solaris_10,solaris_11 solaris,solaris_nevada,solaris_10,solaris_11
  • CPU: generic,sparc
  • Submitted: 2007-06-29
  • Updated: 2011-03-08
  • Resolved: 2011-03-08
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.
6u21Fixed 7 b116Fixed
Related Reports
Relates :  
When Java application get keyboard focus, it does not call XSetICFocus from the second time. The behavior of 1.5.0_07(S10U2 bundled) was that it always called XSetICFocus when it got the keyboard focus. But 1.5.0_12 or later include 1.6.0 does not call XSetICFocus at getting keyboard focus. (do not know 1.5.0_08 <-> 1.5.0_11)
This causes problem regarding Input Language switcing (6487681) or IM on/off sync (6574467) of IIIMF for Java application only on Solaris platform. 
Please call XSetICFocus when input fiels/area get keyboard focus. 
We'd like to have update release for both of 1.5.0 and 1.6.0 (S10U5 and Nevada).
The problem for ibus is that ibus can show aux window such as
lookup choice or ibus aux pallet with java app only first time.
Once input focus moves out from java app, the ibus aux window
never comes up since the java app does not send focus IN event
to ibus xim server.

EVALUATION Need to take the temporary focus lost info into account. The fix is to save the isTemporary value in deactivate() and to call setXICFocus() when it was temporary focus lost.

EVALUATION Tested with latest JDK6U3 build. A part of the fix for 6228914 (specifically changes in X11InputMethod.java) is the cause of the problem. The changes in X11InputMethod.java addresses the following:(copied from its evaluation) 1. Delay resetting the XIC focus when deactivate is called and record the current XIC focussed component. 2. When activate is called, compare the current focused component peer with the saved XIC focussed component peer. If they are same, no need to take any actions (calling setXICFocus). Otherwise, reset the old XIC focus and set the XIC focus for the new focussed component.

EVALUATION Tested on 1.5.0_09 and 1.5.0_10(system default java) on s10s_u2wos_09a SPARC. The problem is not seen on 1.5.0_09, but the problem starts in 1.5.0_10. In 1.5.0_10, 6228914 is backported from JDK6 and the a part of the changes in X11InputMethod.java seems to be the cause of this issue. More updates will follow. 6228914 is a perf improvement fix.