]> Dogcows Code - chaz/openbox/blobdiff - util/epist/screen.cc
oops. fix workspace warping merge buglet
[chaz/openbox] / util / epist / screen.cc
index 1705202bc319ad82f36df47b4b1cb653a73da11a..5711d5515646beb7f1373d39bd8f5b94db24ffae 100644 (file)
@@ -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<char*>(_info->displayString().c_str()))) {
       cout << "warning: couldn't set environment variable 'DISPLAY'\n";
This page took 0.020438 seconds and 4 git commands to generate.