From d6351cf625dc8286f7c8717edc8803237810ad45 Mon Sep 17 00:00:00 2001 From: Quentin Rameau Date: Mon, 4 Feb 2019 00:29:26 +0100 Subject: Close when the embedding window is destroyed --- dmenu.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'dmenu.c') diff --git a/dmenu.c b/dmenu.c index 7174098..08623da 100644 --- a/dmenu.c +++ b/dmenu.c @@ -746,6 +746,11 @@ run(void) case ButtonPress: buttonpress(&ev); break; + case DestroyNotify: + if (ev.xdestroywindow.window != win) + break; + cleanup(); + exit(1); case Expose: if (ev.xexpose.count == 0) drw_map(drw, win, 0, 0, mw, mh); @@ -860,7 +865,7 @@ setup(void) XMapRaised(dpy, win); XSetInputFocus(dpy, win, RevertToParent, CurrentTime); if (embed) { - XSelectInput(dpy, parentwin, FocusChangeMask); + XSelectInput(dpy, parentwin, FocusChangeMask | SubstructureNotifyMask); if (XQueryTree(dpy, parentwin, &dw, &w, &dws, &du) && dws) { for (i = 0; i < du && dws[i] != win; ++i) XSelectInput(dpy, dws[i], FocusChangeMask); -- cgit v1.2.3 From c10954a12ad8abdae6471d6770f91db34c34152e Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Tue, 12 Feb 2019 19:10:43 +0100 Subject: fix crash when XOpenIM returns NULL for example when IME variables are set, but the program is not started (yet). --- dmenu.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'dmenu.c') diff --git a/dmenu.c b/dmenu.c index 08623da..b8399e7 100644 --- a/dmenu.c +++ b/dmenu.c @@ -857,8 +857,17 @@ setup(void) CWOverrideRedirect | CWBackPixel | CWColormap | CWEventMask | CWBorderPixel, &swa); XSetClassHint(dpy, win, &ch); - /* open input methods */ - xim = XOpenIM(dpy, NULL, NULL, NULL); + + /* input methods */ + if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) { + XSetLocaleModifiers("@im=local"); + if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) { + XSetLocaleModifiers("@im="); + if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) + die("XOpenIM failed. Could not open input device.\n"); + } + } + xic = XCreateIC(xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, XNClientWindow, win, XNFocusWindow, win, NULL); -- cgit v1.2.3 From f3e5ba3a97326653beca855bcb0ff7fd3b47b532 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Tue, 12 Feb 2019 22:58:35 +0100 Subject: improve xopenim error message die() already prints a newline. --- dmenu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'dmenu.c') diff --git a/dmenu.c b/dmenu.c index b8399e7..ead3c41 100644 --- a/dmenu.c +++ b/dmenu.c @@ -864,7 +864,7 @@ setup(void) if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) { XSetLocaleModifiers("@im="); if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) - die("XOpenIM failed. Could not open input device.\n"); + die("XOpenIM failed: could not open input device"); } } -- cgit v1.2.3 From b23431233d2d5dd3f35a28f0c63ece2e065163ac Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Sun, 3 Mar 2019 13:08:54 +0100 Subject: revert IME support dmenu will not handle IME support (st will, atleast for now). revert parts of commit 377bd37e212b1ec4c03a481245603c6560d0be22 this commit also broke input focus. --- dmenu.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'dmenu.c') diff --git a/dmenu.c b/dmenu.c index ead3c41..bde0869 100644 --- a/dmenu.c +++ b/dmenu.c @@ -740,7 +740,7 @@ run(void) XEvent ev; while (!XNextEvent(dpy, &ev)) { - if (XFilterEvent(&ev, None)) + if (XFilterEvent(&ev, win)) continue; switch(ev.type) { case ButtonPress: @@ -859,20 +859,13 @@ setup(void) /* input methods */ - if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) { - XSetLocaleModifiers("@im=local"); - if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) { - XSetLocaleModifiers("@im="); - if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) - die("XOpenIM failed: could not open input device"); - } - } + if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) + die("XOpenIM failed: could not open input device"); xic = XCreateIC(xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, XNClientWindow, win, XNFocusWindow, win, NULL); XMapRaised(dpy, win); - XSetInputFocus(dpy, win, RevertToParent, CurrentTime); if (embed) { XSelectInput(dpy, parentwin, FocusChangeMask | SubstructureNotifyMask); if (XQueryTree(dpy, parentwin, &dw, &w, &dws, &du) && dws) { @@ -967,8 +960,6 @@ main(int argc, char *argv[]) if (!setlocale(LC_CTYPE, "") || !XSupportsLocale()) fputs("warning: no locale support\n", stderr); - if (!XSetLocaleModifiers("")) - fputs("warning: no locale modifiers support\n", stderr); if (!(dpy = XOpenDisplay(NULL))) die("cannot open display"); screen = DefaultScreen(dpy); -- cgit v1.2.3