extern BOOL destroy_glxpixmap(Display *display, XID glxpixmap);
/* XIM support */
+extern BOOL X11DRV_InitXIM( const char *input_style );
extern XIC X11DRV_CreateIC(XIM xim, Display *display, Window win);
-extern XIM X11DRV_SetupXIM(Display *display, const char *input_style);
+extern XIM X11DRV_SetupXIM(Display *display);
extern void X11DRV_XIMLookupChars( const char *str, DWORD count );
extern void X11DRV_ForceXIMReset(HWND hwnd);
X11DRV_InitKeyboard( gdi_display );
X11DRV_InitClipboard();
+ if (use_xim) use_xim = X11DRV_InitXIM( input_style );
return TRUE;
}
if (TRACE_ON(synchronous)) XSynchronize( data->display, True );
wine_tsx11_unlock();
- if (use_xim && !(data->xim = X11DRV_SetupXIM( data->display, input_style )))
- WARN("Input Method is not available\n");
-
set_queue_display_fd( data->display );
TlsSetValue( thread_data_tls_index, data );
+
+ if (use_xim) data->xim = X11DRV_SetupXIM( data->display );
X11DRV_SetCursor( NULL );
+
return data;
}
BOOL ximInComposeMode=FALSE;
-static XIMStyle ximStyle = 0;
-static XIMStyle ximStyleRoot = 0;
-
/* moved here from imm32 for dll separation */
static DWORD dwCompStringLength = 0;
static LPBYTE CompositionString = NULL;
/* inorder to enable deadkey support */
#define STYLE_NONE (XIMPreeditNothing | XIMStatusNothing)
+static XIMStyle ximStyle = 0;
+static XIMStyle ximStyleRoot = 0;
+static XIMStyle ximStyleRequest = STYLE_CALLBACK;
+
static BOOL X11DRV_ImmSetInternalString(DWORD dwIndex, DWORD dwOffset,
DWORD selLength, LPWSTR lpComp, DWORD dwCompLen)
{
}
/***********************************************************************
-* X11DRV Ime creation
-*/
-XIM X11DRV_SetupXIM(Display *display, const char *input_style)
+ * X11DRV_InitXIM
+ *
+ * Process-wide XIM initialization.
+ */
+BOOL X11DRV_InitXIM( const char *input_style )
{
- XIMStyle ximStyleRequest, ximStyleCallback, ximStyleNone;
- XIMStyles *ximStyles = NULL;
- INT i;
- XIM xim;
-
- ximStyleRequest = STYLE_CALLBACK;
+ BOOL ret;
if (!strcasecmp(input_style, "offthespot"))
ximStyleRequest = STYLE_OFFTHESPOT;
ximStyleRequest = STYLE_ROOT;
wine_tsx11_lock();
-
- if(!XSupportsLocale())
+ if (!(ret = XSupportsLocale()))
{
WARN("X does not support locale.\n");
- goto err;
}
- if(XSetLocaleModifiers("") == NULL)
+ else if (XSetLocaleModifiers("") == NULL)
{
WARN("Could not set locale modifiers.\n");
- goto err;
+ ret = FALSE;
}
+ wine_tsx11_unlock();
+ return ret;
+}
+
+
+/***********************************************************************
+* X11DRV Ime creation
+*/
+XIM X11DRV_SetupXIM( Display *display )
+{
+ XIMStyle ximStyleCallback, ximStyleNone;
+ XIMStyles *ximStyles = NULL;
+ INT i;
+ XIM xim;
+
+ wine_tsx11_lock();
xim = XOpenIM(display, NULL, NULL, NULL);
if (xim == NULL)