diff options
author | David Robillard <d@drobilla.net> | 2016-09-14 23:01:34 +0800 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2016-09-14 23:01:34 +0800 |
commit | d394a51b662a3cbbb575a94836a6d9737ce0c26a (patch) | |
tree | c32e18b599783dff76a08074a90bfeb8f668859f | |
parent | c86a7f10621d8f5f6f2a89f801ca25560ecc9fff (diff) | |
download | pugl-d394a51b662a3cbbb575a94836a6d9737ce0c26a.tar.gz pugl-d394a51b662a3cbbb575a94836a6d9737ce0c26a.tar.bz2 pugl-d394a51b662a3cbbb575a94836a6d9737ce0c26a.zip |
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).
-rw-r--r-- | pugl/pugl_x11.c | 8 | ||||
-rw-r--r-- | 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 <locale.h> #include <math.h> #include <stdio.h> #include <string.h> @@ -217,6 +218,8 @@ main(int argc, char** argv) } } + setlocale(LC_CTYPE, ""); + PuglView* view = puglInit(NULL, NULL); puglInitWindowClass(view, "PuglTest"); puglInitWindowSize(view, 512, 512); |