diff options
| author | Quentin Rameau <quinq@fifth.space> | 2020-02-02 15:37:29 +0100 | 
|---|---|---|
| committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2020-02-02 22:56:51 +0100 | 
| commit | 99de33395126fc9708f442d155e737b9182f6ef4 (patch) | |
| tree | 0be224576337142b59fe5627bc4d92210f25d358 | |
| parent | 895e5b50a8cc835c19a45e1e328eb4dc78f5fd0c (diff) | |
| download | st-99de33395126fc9708f442d155e737b9182f6ef4.tar.gz st-99de33395126fc9708f442d155e737b9182f6ef4.tar.bz2 | |
x: move IME variables into XWindow ime embedded struct
| -rw-r--r-- | x.c | 26 | 
1 files changed, 14 insertions, 12 deletions
| @@ -94,8 +94,10 @@ typedef struct {  	Drawable buf;  	GlyphFontSpec *specbuf; /* font spec buffer used for rendering */  	Atom xembed, wmdeletewin, netwmname, netwmpid; -	XIM xim; -	XIC xic; +	struct { +		XIM xim; +		XIC xic; +	} ime;  	Draw draw;  	Visual *vis;  	XSetWindowAttributes attrs; @@ -1026,18 +1028,18 @@ ximopen(Display *dpy)  {  	XIMCallback destroy = { .client_data = NULL, .callback = ximdestroy }; -	if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) { +	if ((xw.ime.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) {  		XSetLocaleModifiers("@im=local"); -		if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) { +		if ((xw.ime.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) {  			XSetLocaleModifiers("@im="); -			if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) +			if ((xw.ime.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL)  				die("XOpenIM failed. Could not open input device.\n");  		}  	} -	if (XSetIMValues(xw.xim, XNDestroyCallback, &destroy, NULL) != NULL) +	if (XSetIMValues(xw.ime.xim, XNDestroyCallback, &destroy, NULL) != NULL)  		die("XSetIMValues failed. Could not set input method value.\n"); -	xw.xic = XCreateIC(xw.xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, -				XNClientWindow, xw.win, XNFocusWindow, xw.win, NULL); +	xw.xic = XCreateIC(xw.ime.xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, +	                   XNClientWindow, xw.win, XNFocusWindow, xw.win, NULL);  	if (xw.xic == NULL)  		die("XCreateIC failed. Could not obtain input method.\n");  } @@ -1053,7 +1055,7 @@ ximinstantiate(Display *dpy, XPointer client, XPointer call)  void  ximdestroy(XIM xim, XPointer client, XPointer call)  { -	xw.xim = NULL; +	xw.ime.xim = NULL;  	XRegisterIMInstantiateCallback(xw.dpy, NULL, NULL, NULL,  					ximinstantiate, NULL);  } @@ -1682,13 +1684,13 @@ focus(XEvent *ev)  		return;  	if (ev->type == FocusIn) { -		XSetICFocus(xw.xic); +		XSetICFocus(xw.ime.xic);  		win.mode |= MODE_FOCUSED;  		xseturgency(0);  		if (IS_SET(MODE_FOCUS))  			ttywrite("\033[I", 3, 0);  	} else { -		XUnsetICFocus(xw.xic); +		XUnsetICFocus(xw.ime.xic);  		win.mode &= ~MODE_FOCUSED;  		if (IS_SET(MODE_FOCUS))  			ttywrite("\033[O", 3, 0); @@ -1752,7 +1754,7 @@ kpress(XEvent *ev)  	if (IS_SET(MODE_KBDLOCK))  		return; -	len = XmbLookupString(xw.xic, e, buf, sizeof buf, &ksym, &status); +	len = XmbLookupString(xw.ime.xic, e, buf, sizeof buf, &ksym, &status);  	/* 1. shortcuts */  	for (bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) {  		if (ksym == bp->keysym && match(bp->mod, e->state)) { | 
