• Ryan C. Gordon's avatar
    Significantly improved XIM support. · daddb897
    Ryan C. Gordon authored
       Fixes Bugzilla #429.
    
    
    Selected notes from the patch's README:
    
    = FIXES =
    
    This patch fixes the above issues as follows.
    
    == X11 events ==
    
    Moved XFilterEvent just after XNextEvent so that all events are passed
    to it.  Also, XFilterEvent will receive masks indicated by IM through
    XNFilterEvents IC value as well as masks surpplied by SDL.
    
    X11_KeyRepeat is called between XNextEvent and XFilterEvent, after
    testing an event is a KeyRelease.  I'm not 100% comfortable to do so,
    but I couldn't find a better timing to call it, and use of the
    function is inevitable.
    
    == Xutf8LookupString ==
    
    Used a longer buffer to receive UTF-8 string.  If it is insufficient,
    a dynamic storage of the requested size will be allocated.  The
    initial size of the buffer is set to 32, because the Japanese text
    converted from the most widely used benchmark key sequence for
    Japanese IM, "WATASHINONAMAEHANAKANODESU." has ten Japanese characters
    in it, that occupies 30 bytes when encoded in UTF-8.
    
    == SDL_keysym.unicode ==
    
    On Windows version of SDL implementation, SDL_keysym.unicode stores
    UTF-16 encoded unicode characters, one UTF-16 encoding unit per an SDL
    event.  A Unicode supplementary characters are sent to an application
    as two events.  (One with a high surrogate and another with a low
    surrogate.)  The behavior seems reasonable since it is upward
    compatible with existing handling of BMP characters.
    
    I wrote a UTF-8 to UTF-16 conversion function for the purpose.  It is
    designed with the execution speed in mind, having a minimum set of
    features that my patch requires.
    
    --HG--
    branch : SDL-1.2
    extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%402378
    daddb897
SDL_x11dyn.c 4.93 KB