X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=util%2Fepist%2Fscreen.cc;h=5711d5515646beb7f1373d39bd8f5b94db24ffae;hb=987cf7cc40d4ab9c5e895ea2b0c7a77f10a0510f;hp=1705202bc319ad82f36df47b4b1cb653a73da11a;hpb=2685eeb77fd1c744d1c46e27542cf59ec5e9171e;p=chaz%2Fopenbox diff --git a/util/epist/screen.cc b/util/epist/screen.cc index 1705202b..5711d551 100644 --- a/util/epist/screen.cc +++ b/util/epist/screen.cc @@ -149,7 +149,9 @@ void screen::processEvent(const XEvent &e) { DestroyNotify, &ev) || XCheckTypedWindowEvent(_epist->getXDisplay(), e.xany.window, UnmapNotify, &ev)) { - processEvent(ev); + + XWindow *win = _epist->findWindow(e.xany.window); + if (win) win->processEvent(ev); } updateClientList(); @@ -566,6 +568,12 @@ void screen::updateActiveWindow() { void screen::execCommand(const string &cmd) const { pid_t pid; if ((pid = fork()) == 0) { + // disconnect the child from epist's session and the tty + if (setsid() == -1) { + cout << "warning: could not start a new process group\n"; + perror("setsid"); + } + // make the command run on the correct screen if (putenv(const_cast(_info->displayString().c_str()))) { cout << "warning: couldn't set environment variable 'DISPLAY'\n";