From d394a51b662a3cbbb575a94836a6d9737ce0c26a Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 14 Sep 2016 23:01:34 +0800 Subject: Fix compose key Turns out the app needs to call setlocale(LC_ALL, "") for this to work. I am not sure if it is possible to make things work correctly purely in Pugl (since plugin UIs can't call setlocale). --- pugl/pugl_x11.c | 8 +++++--- pugl_test.c | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pugl/pugl_x11.c b/pugl/pugl_x11.c index 855d04b..7ceef29 100644 --- a/pugl/pugl_x11.c +++ b/pugl/pugl_x11.c @@ -323,6 +323,7 @@ puglCreateWindow(PuglView* view, const char* title) (Window)(view->transient_parent)); } + XSetLocaleModifiers(""); if (!(impl->xim = XOpenIM(impl->display, NULL, NULL, NULL))) { XSetLocaleModifiers("@im="); if (!(impl->xim = XOpenIM(impl->display, NULL, NULL, NULL))) { @@ -330,10 +331,11 @@ puglCreateWindow(PuglView* view, const char* title) } } - if (!(impl->xic = XCreateIC(impl->xim, XNInputStyle, - XIMPreeditNothing | XIMStatusNothing, + const XIMStyle im_style = XIMPreeditNothing | XIMStatusNothing; + if (!(impl->xic = XCreateIC(impl->xim, + XNInputStyle, im_style, XNClientWindow, impl->win, - XNFocusWindow, impl->win, + XNFocusWindow, impl->win, NULL))) { fprintf(stderr, "warning: XCreateIC failed\n"); } diff --git a/pugl_test.c b/pugl_test.c index 942b725..698299b 100644 --- a/pugl_test.c +++ b/pugl_test.c @@ -18,6 +18,7 @@ @file pugl_test.c A simple Pugl test that creates a top-level window. */ +#include #include #include #include @@ -217,6 +218,8 @@ main(int argc, char** argv) } } + setlocale(LC_CTYPE, ""); + PuglView* view = puglInit(NULL, NULL); puglInitWindowClass(view, "PuglTest"); puglInitWindowSize(view, 512, 512); -- cgit v1.2.3