Commit 6dca48fe authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

winex11: Add IME functionality to winex11drv.

All XIM interaction will soon pass through this functionality instead of directly to imm32.
parent d03f4d2a
......@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = winex11.drv
IMPORTS = user32 gdi32 advapi32 kernel32 ntdll
IMPORTS = user32 gdi32 advapi32 imm32 kernel32 ntdll
EXTRAINCL = @X_CFLAGS@
EXTRALIBS = @X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
......@@ -21,6 +21,7 @@ C_SRCS = \
dib_src_swap.c \
event.c \
graphics.c \
ime.c \
init.c \
keyboard.c \
mouse.c \
......
......@@ -145,3 +145,21 @@
@ cdecl wglShareLists(long long) X11DRV_wglShareLists
@ cdecl wglUseFontBitmapsA(ptr long long long) X11DRV_wglUseFontBitmapsA
@ cdecl wglUseFontBitmapsW(ptr long long long) X11DRV_wglUseFontBitmapsW
#IME Interface
@ stdcall ImeInquire(ptr wstr wstr)
@ stdcall ImeConfigure(long long long ptr)
@ stdcall ImeDestroy(long)
@ stdcall ImeEscape(long long ptr)
@ stdcall ImeSelect(long long)
@ stdcall ImeSetActiveContext(long long)
@ stdcall ImeToAsciiEx(long long ptr ptr long long)
@ stdcall NotifyIME(long long long long)
@ stdcall ImeRegisterWord(wstr long wstr)
@ stdcall ImeUnregisterWord(wstr long wstr)
@ stdcall ImeEnumRegisterWord(ptr wstr long wstr ptr)
@ stdcall ImeSetCompositionString(long long ptr long ptr long)
@ stdcall ImeConversionList(long wstr ptr long long)
@ stdcall ImeProcessKey(long long long ptr)
@ stdcall ImeGetRegisterWordStyle(wstr long wstr)
@ stdcall ImeGetImeMenuItems(long long long ptr ptr long)
......@@ -277,6 +277,20 @@ extern BOOL destroy_glxpixmap(Display *display, XID glxpixmap);
extern XIC X11DRV_CreateIC(XIM xim, Display *display, Window win);
extern XIM X11DRV_SetupXIM(Display *display, const char *input_style);
extern void X11DRV_XIMLookupChars( const char *str, DWORD count );
extern void X11DRV_ForceXIMReset(HWND hwnd);
/* IME support */
extern void IME_RegisterClasses(HINSTANCE hImeInst);
extern void IME_UnregisterClasses(HINSTANCE hImeInst);
extern void IME_SetOpenStatus(BOOL fOpen);
extern void IME_XIMPresent(BOOL present);
extern LRESULT IME_SendMessageToSelectedHWND(UINT msg, WPARAM wParam, LPARAM lParam);
extern INT IME_GetCursorPos();
extern void IME_UpdateAssociation(HWND focus);
extern BOOL IME_SetCompositionString(DWORD dwIndex, LPCVOID lpComp,
DWORD dwCompLen, LPCVOID lpRead,
DWORD dwReadLen);
extern BOOL IME_NotifyIME(DWORD dwAction, DWORD dwIndex, DWORD dwValue);
extern void X11DRV_XDND_EnterEvent( HWND hWnd, XClientMessageEvent *event );
extern void X11DRV_XDND_PositionEvent( HWND hWnd, XClientMessageEvent *event );
......
......@@ -672,12 +672,14 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
{
case DLL_PROCESS_ATTACH:
ret = process_attach();
IME_RegisterClasses(hinst);
break;
case DLL_THREAD_DETACH:
thread_detach();
break;
case DLL_PROCESS_DETACH:
process_detach();
IME_UnregisterClasses(hinst);
break;
}
return ret;
......
......@@ -500,6 +500,8 @@ XIM X11DRV_SetupXIM(Display *display, const char *input_style)
}
wine_tsx11_unlock();
IME_XIMPresent(TRUE);
IME_UpdateAssociation(NULL);
if(!hImmDll)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment