]> Dogcows Code - chaz/openbox/blobdiff - src/openbox.cc
added XAtom class, and it all now compiles.
[chaz/openbox] / src / openbox.cc
index 8d3b1af1df03bca836f88dca2c1b04958a2c02f8..6df793a21542d875bc3d80d3ef1fe56c550d93a0 100644 (file)
@@ -151,83 +151,96 @@ static Bool queueScanner(Display *, XEvent *e, char *args) {
 Openbox *openbox;
 
 
-Openbox::Openbox(int m_argc, char **m_argv, char *dpy_name, char *rc)
-  : BaseDisplay(m_argv[0], dpy_name) {
-  grab();
+Openbox::Openbox(int m_argc, char **m_argv, char *dpy_name, char *rc,
+                 char *menu) : BaseDisplay(m_argv[0], dpy_name) {
+                   grab();
 
-  if (! XSupportsLocale())
-    fprintf(stderr, "X server does not support locale\n");
+                   if (! XSupportsLocale())
+                     fprintf(stderr, "X server does not support locale\n");
 
-  if (XSetLocaleModifiers("") == NULL)
-    fprintf(stderr, "cannot set locale modifiers\n");
+                   if (XSetLocaleModifiers("") == NULL)
+                     fprintf(stderr, "cannot set locale modifiers\n");
 
-  ::openbox = this;
-  argc = m_argc;
-  argv = m_argv;
-  if (rc == NULL) {
-    char *homedir = getenv("HOME");
+                   ::openbox = this;
+                   argc = m_argc;
+                   argv = m_argv;
+                   if (rc == NULL || menu == NULL) {
+                     char *homedir = getenv("HOME");
+                     char *configdir = new char[strlen(homedir) + strlen("/.openbox") + 1];
+                     sprintf(configdir, "%s/.openbox", homedir);
+                     // try to make sure the ~/.openbox directory exists
+                     mkdir(configdir, S_IREAD | S_IWRITE | S_IEXEC |
+                           S_IRGRP | S_IWGRP | S_IXGRP |
+                           S_IROTH | S_IWOTH | S_IXOTH);
 
-    rc_file = new char[strlen(homedir) + strlen("/.openbox/rc") + 1];
-    sprintf(rc_file, "%s/.openbox", homedir);
 
-    // try to make sure the ~/.openbox directory exists
-    mkdir(rc_file, S_IREAD | S_IWRITE | S_IEXEC | S_IRGRP | S_IWGRP | S_IXGRP |
-          S_IROTH | S_IWOTH | S_IXOTH);
-    
-    sprintf(rc_file, "%s/.openbox/rc", homedir);
-  } else {
-    rc_file = bstrdup(rc);
-  }
-  config.setFile(rc_file);
+                     if (rc == NULL) {
+                       rc_file = new char[strlen(configdir) + strlen("/rc") + 1];
+                       sprintf(rc_file, "%s/rc", configdir);
+                     } else
+                       rc_file = bstrdup(rc);
 
-  no_focus = False;
+                     if (menu == NULL) {
+                       menu_file = new char[strlen(configdir) + strlen("/menu") + 1];
+                       sprintf(menu_file, "%s/menu", configdir);
+                     } else
+                       menu_file = bstrdup(menu);
 
-  resource.menu_file = resource.style_file = NULL;
-  resource.titlebar_layout = NULL;
-  resource.auto_raise_delay.tv_sec = resource.auto_raise_delay.tv_usec = 0;
+                     delete [] configdir;
+                   }
+                   config.setFile(rc_file);
 
-  masked_window = NULL;
-  masked = None;
+                   no_focus = False;
 
-  load();
+                   resource.style_file = NULL;
+                   resource.titlebar_layout = NULL;
+                   resource.auto_raise_delay.tv_sec = resource.auto_raise_delay.tv_usec = 0;
+
+                   current_screen = (BScreen *) 0;
+                   masked_window = (OpenboxWindow *) 0;
+                   masked = None;
+
+                   load();
 
 #ifdef    HAVE_GETPID
-  openbox_pid = XInternAtom(getXDisplay(), "_BLACKBOX_PID", False);
+                   openbox_pid = XInternAtom(getXDisplay(), "_BLACKBOX_PID", False);
 #endif // HAVE_GETPID
 
-  for (int i = 0; i < getNumberOfScreens(); i++) {
-    BScreen *screen = new BScreen(*this, i, config);
+                   for (unsigned int s = 0; s < numberOfScreens(); s++) {
+                     BScreen *screen = new BScreen(*this, s, config);
 
-    if (! screen->isScreenManaged()) {
-      delete screen;
-      continue;
-    }
+                     if (! screen->isScreenManaged()) {
+                       delete screen;
+                       continue;
+                     }
 
-    screenList.push_back(screen);
-  }
+                     screenList.push_back(screen);
+                   }
 
-  if (screenList.empty()) {
-    fprintf(stderr,
-           i18n->getMessage(openboxSet, openboxNoManagableScreens,
-              "Openbox::Openbox: no managable screens found, aborting.\n"));
-    ::exit(3);
-  }
-  focused_screen = screenList.front();
+                   if (screenList.empty()) {
+                     fprintf(stderr,
+                             i18n(openboxSet, openboxNoManagableScreens,
+                                  "Openbox::Openbox: no managable screens found, aborting.\n"));
+                     ::exit(3);
+                   }
+                   current_screen = screenList[0];
 
-  // save current settings and default values
-  save();
-  
-  XSynchronize(getXDisplay(), False);
-  XSync(getXDisplay(), False);
+                   // save current settings and default values
+                   save();
 
-  reconfigure_wait = reread_menu_wait = False;
+                   XSynchronize(getXDisplay(), False);
+                   XSync(getXDisplay(), False);
 
-  timer = new BTimer(*this, *this);
-  timer->setTimeout(0);
-  timer->fireOnce(True);
+                   reconfigure_wait = reread_menu_wait = False;
 
-  ungrab();
-}
+                   timer = new BTimer(*this, *this);
+                   timer->setTimeout(0);
+                   timer->fireOnce(True);
+
+                   ungrab();
+
+                   focusWindow(0);
+                 }
 
 
 Openbox::~Openbox() {
@@ -237,9 +250,6 @@ Openbox::~Openbox() {
   for_each(menuTimestamps.begin(), menuTimestamps.end(),
            PointerAssassin());
 
-  if (resource.menu_file)
-    delete [] resource.menu_file;
-
   if (resource.style_file)
     delete [] resource.style_file;
 
@@ -249,6 +259,7 @@ Openbox::~Openbox() {
   delete timer;
 
   delete [] rc_file;
+  delete [] menu_file;
 }
 
 
@@ -280,7 +291,7 @@ void Openbox::process_event(XEvent *e) {
       win->buttonPressEvent(&e->xbutton);
 
       if (e->xbutton.button == 1)
-       win->installColormap(True);
+        win->installColormap(True);
     } else if ((menu = searchMenu(e->xbutton.window))) {
       menu->buttonPressEvent(&e->xbutton);
 
@@ -295,68 +306,68 @@ void Openbox::process_event(XEvent *e) {
       ScreenList::iterator it;
       for (it = screenList.begin(); it != screenList.end(); ++it) {
         BScreen *screen = *it;
-       if (e->xbutton.window == screen->getRootWindow()) {
-         if (e->xbutton.button == 1) {
+        if (e->xbutton.window == screen->getRootWindow()) {
+          if (e->xbutton.button == 1) {
             if (! screen->isRootColormapInstalled())
-             screen->getImageControl()->installRootColormap();
+              screen->getImageControl()->installRootColormap();
 
-           if (screen->getWorkspacemenu()->isVisible())
-             screen->getWorkspacemenu()->hide();
+            if (screen->getWorkspacemenu()->isVisible())
+              screen->getWorkspacemenu()->hide();
 
             if (screen->getRootmenu()->isVisible())
               screen->getRootmenu()->hide();
           } else if (e->xbutton.button == 2) {
-           int mx = e->xbutton.x_root -
-             (screen->getWorkspacemenu()->getWidth() / 2);
-           int my = e->xbutton.y_root -
-             (screen->getWorkspacemenu()->getTitleHeight() / 2);
-
-           if (mx < 0) mx = 0;
-           if (my < 0) my = 0;
-
-           if (mx + screen->getWorkspacemenu()->getWidth() >
-               screen->size().w())
-             mx = screen->size().w() -
-               screen->getWorkspacemenu()->getWidth() -
-               screen->getBorderWidth();
-
-           if (my + screen->getWorkspacemenu()->getHeight() >
-               screen->size().h())
-             my = screen->size().h() -
-               screen->getWorkspacemenu()->getHeight() -
-               screen->getBorderWidth();
-
-           screen->getWorkspacemenu()->move(mx, my);
-
-           if (! screen->getWorkspacemenu()->isVisible()) {
-             screen->getWorkspacemenu()->removeParent();
-             screen->getWorkspacemenu()->show();
-           }
-         } else if (e->xbutton.button == 3) {
-           int mx = e->xbutton.x_root -
-             (screen->getRootmenu()->getWidth() / 2);
-           int my = e->xbutton.y_root -
-             (screen->getRootmenu()->getTitleHeight() / 2);
-
-           if (mx < 0) mx = 0;
-           if (my < 0) my = 0;
-
-           if (mx + screen->getRootmenu()->getWidth() > screen->size().w())
-             mx = screen->size().w() -
-               screen->getRootmenu()->getWidth() -
-               screen->getBorderWidth();
-
-           if (my + screen->getRootmenu()->getHeight() > screen->size().h())
-               my = screen->size().h() -
-                 screen->getRootmenu()->getHeight() -
-                 screen->getBorderWidth();
-
-           screen->getRootmenu()->move(mx, my);
-
-           if (! screen->getRootmenu()->isVisible()) {
-             checkMenu();
-             screen->getRootmenu()->show();
-           }
+            int mx = e->xbutton.x_root -
+              (screen->getWorkspacemenu()->getWidth() / 2);
+            int my = e->xbutton.y_root -
+              (screen->getWorkspacemenu()->getTitleHeight() / 2);
+
+            if (mx < 0) mx = 0;
+            if (my < 0) my = 0;
+
+            if (mx + screen->getWorkspacemenu()->getWidth() >
+                screen->size().w())
+              mx = screen->size().w() -
+                screen->getWorkspacemenu()->getWidth() -
+                screen->getBorderWidth();
+
+            if (my + screen->getWorkspacemenu()->getHeight() >
+                screen->size().h())
+              my = screen->size().h() -
+                screen->getWorkspacemenu()->getHeight() -
+                screen->getBorderWidth();
+
+            screen->getWorkspacemenu()->move(mx, my);
+
+            if (! screen->getWorkspacemenu()->isVisible()) {
+              screen->getWorkspacemenu()->removeParent();
+              screen->getWorkspacemenu()->show();
+            }
+          } else if (e->xbutton.button == 3) {
+            int mx = e->xbutton.x_root -
+              (screen->getRootmenu()->getWidth() / 2);
+            int my = e->xbutton.y_root -
+              (screen->getRootmenu()->getTitleHeight() / 2);
+
+            if (mx < 0) mx = 0;
+            if (my < 0) my = 0;
+
+            if (mx + screen->getRootmenu()->getWidth() > screen->size().w())
+              mx = screen->size().w() -
+                screen->getRootmenu()->getWidth() -
+                screen->getBorderWidth();
+
+            if (my + screen->getRootmenu()->getHeight() > screen->size().h())
+              my = screen->size().h() -
+                screen->getRootmenu()->getHeight() -
+                screen->getBorderWidth();
+
+            screen->getRootmenu()->move(mx, my);
+
+            if (! screen->getRootmenu()->isVisible()) {
+              checkMenu();
+              screen->getRootmenu()->show();
+            }
           } else if (e->xbutton.button == 4) {
             if ((screen->getCurrentWorkspaceID() + 1) >
                 screen->getWorkspaceCount() - 1)
@@ -415,18 +426,18 @@ void Openbox::process_event(XEvent *e) {
       grab();
 
       if (validateWindow(e->xconfigurerequest.window)) {
-       XWindowChanges xwc;
-
-       xwc.x = e->xconfigurerequest.x;
-       xwc.y = e->xconfigurerequest.y;
-       xwc.width = e->xconfigurerequest.width;
-       xwc.height = e->xconfigurerequest.height;
-       xwc.border_width = e->xconfigurerequest.border_width;
-       xwc.sibling = e->xconfigurerequest.above;
-       xwc.stack_mode = e->xconfigurerequest.detail;
-
-       XConfigureWindow(getXDisplay(), e->xconfigurerequest.window,
-                        e->xconfigurerequest.value_mask, &xwc);
+        XWindowChanges xwc;
+
+        xwc.x = e->xconfigurerequest.x;
+        xwc.y = e->xconfigurerequest.y;
+        xwc.width = e->xconfigurerequest.width;
+        xwc.height = e->xconfigurerequest.height;
+        xwc.border_width = e->xconfigurerequest.border_width;
+        xwc.sibling = e->xconfigurerequest.above;
+        xwc.stack_mode = e->xconfigurerequest.detail;
+
+        XConfigureWindow(getXDisplay(), e->xconfigurerequest.window,
+                         e->xconfigurerequest.value_mask, &xwc);
       }
 
       ungrab();
@@ -438,9 +449,9 @@ void Openbox::process_event(XEvent *e) {
   case MapRequest: {
 #ifdef    DEBUG
     fprintf(stderr,
-           i18n->getMessage(openboxSet, openboxMapRequest,
-                "Openbox::process_event(): MapRequest for 0x%lx\n"),
-           e->xmaprequest.window);
+            i18n(openboxSet, openboxMapRequest,
+                 "Openbox::process_event(): MapRequest for 0x%lx\n"),
+            e->xmaprequest.window);
 #endif // DEBUG
 
     OpenboxWindow *win = searchWindow(e->xmaprequest.window);
@@ -460,7 +471,7 @@ void Openbox::process_event(XEvent *e) {
     if (win)
       win->mapNotifyEvent(&e->xmap);
 
-      break;
+    break;
   }
 
   case UnmapNotify: {
@@ -503,7 +514,7 @@ void Openbox::process_event(XEvent *e) {
   case MotionNotify: {
     // strip the lock key modifiers
     e->xbutton.state &= ~(NumLockMask | ScrollLockMask | LockMask);
-    
+
     last_time = e->xmotion.time;
 
     OpenboxWindow *win = (OpenboxWindow *) 0;
@@ -524,7 +535,7 @@ void Openbox::process_event(XEvent *e) {
       OpenboxWindow *win = searchWindow(e->xproperty.window);
 
       if (win)
-       win->propertyNotifyEvent(e->xproperty.atom);
+        win->propertyNotifyEvent(e->xproperty.atom);
     }
 
     break;
@@ -551,16 +562,16 @@ void Openbox::process_event(XEvent *e) {
     XCheckIfEvent(getXDisplay(), &dummy, queueScanner, (char *) &sa);
 
     if ((e->xcrossing.window == e->xcrossing.root) &&
-       (screen = searchScreen(e->xcrossing.window))) {
+        (screen = searchScreen(e->xcrossing.window))) {
       screen->getImageControl()->installRootColormap();
     } else if ((win = searchWindow(e->xcrossing.window))) {
       if (win->getScreen()->sloppyFocus() &&
-         (! win->isFocused()) && (! no_focus)) {
-       grab();
+          (! win->isFocused()) && (! no_focus)) {
+        grab();
 
         if (((! sa.leave) || sa.inferior) && win->isVisible() &&
             win->setInputFocus())
-         win->installColormap(True);
+          win->installColormap(True);
 
         ungrab();
       }
@@ -630,7 +641,7 @@ void Openbox::process_event(XEvent *e) {
 
     if (screen)
       screen->setRootColormapInstalled((e->xcolormap.state ==
-                                       ColormapInstalled) ? True : False);
+                                        ColormapInstalled) ? True : False);
 
     break;
   }
@@ -656,19 +667,19 @@ void Openbox::process_event(XEvent *e) {
         if (! win || ! win->validateClient()) return;
 
         if (e->xclient.data.l[0] == IconicState)
-         win->iconify();
+          win->iconify();
         if (e->xclient.data.l[0] == NormalState)
           win->deiconify();
       } else if (e->xclient.message_type == getOpenboxChangeWorkspaceAtom()) {
-       BScreen *screen = searchScreen(e->xclient.window);
+        BScreen *screen = searchScreen(e->xclient.window);
 
-       if (screen && e->xclient.data.l[0] >= 0 &&
-           e->xclient.data.l[0] < screen->getWorkspaceCount())
-         screen->changeWorkspaceID(e->xclient.data.l[0]);
+        if (screen && e->xclient.data.l[0] >= 0 &&
+            e->xclient.data.l[0] < screen->getWorkspaceCount())
+          screen->changeWorkspaceID(e->xclient.data.l[0]);
       } else if (e->xclient.message_type == getOpenboxChangeWindowFocusAtom()) {
-       OpenboxWindow *win = searchWindow(e->xclient.window);
+        OpenboxWindow *win = searchWindow(e->xclient.window);
 
-       if (win && win->isVisible() && win->setInputFocus())
+        if (win && win->isVisible() && win->setInputFocus())
           win->installColormap(True);
       } else if (e->xclient.message_type == getOpenboxCycleWindowFocusAtom()) {
         BScreen *screen = searchScreen(e->xclient.window);
@@ -678,20 +689,20 @@ void Openbox::process_event(XEvent *e) {
             screen->prevFocus();
           else
             screen->nextFocus();
-       }
+        }
       } else if (e->xclient.message_type == getOpenboxChangeAttributesAtom()) {
-       OpenboxWindow *win = searchWindow(e->xclient.window);
-
-       if (win && win->validateClient()) {
-         OpenboxHints net;
-         net.flags = e->xclient.data.l[0];
-         net.attrib = e->xclient.data.l[1];
-         net.workspace = e->xclient.data.l[2];
-         net.stack = e->xclient.data.l[3];
-         net.decoration = e->xclient.data.l[4];
-
-         win->changeOpenboxHints(&net);
-       }
+        OpenboxWindow *win = searchWindow(e->xclient.window);
+
+        if (win && win->validateClient()) {
+          OpenboxHints net;
+          net.flags = e->xclient.data.l[0];
+          net.attrib = e->xclient.data.l[1];
+          net.workspace = e->xclient.data.l[2];
+          net.stack = e->xclient.data.l[3];
+          net.decoration = e->xclient.data.l[4];
+
+          win->changeOpenboxHints(&net);
+        }
       }
     }
 
@@ -706,8 +717,8 @@ void Openbox::process_event(XEvent *e) {
       OpenboxWindow *win = (OpenboxWindow *) 0;
 
       if ((win = searchWindow(e->xany.window)) ||
-         (shape_event->kind != ShapeBounding))
-       win->shapeEvent(shape_event);
+          (shape_event->kind != ShapeBounding))
+        win->shapeEvent(shape_event);
     }
 #endif // SHAPE
 
@@ -865,22 +876,21 @@ void Openbox::restart(const char *prog) {
 void Openbox::shutdown() {
   BaseDisplay::shutdown();
 
-  XSetInputFocus(getXDisplay(), PointerRoot, None, CurrentTime);
-
   std::for_each(screenList.begin(), screenList.end(),
                 std::mem_fun(&BScreen::shutdown));
 
+  focusWindow(0);
+
   XSync(getXDisplay(), False);
 }
 
 
 void Openbox::save() {
   config.setAutoSave(false);
-  
+
   // save all values as they are so that the defaults will be written to the rc
   // file
-  
-  config.setValue("session.menuFile", getMenuFilename());
+
   config.setValue("session.colorsPerChannel",
                   resource.colors_per_channel);
   config.setValue("session.styleFile", resource.style_file);
@@ -888,8 +898,8 @@ void Openbox::save() {
   config.setValue("session.doubleClickInterval",
                   (long)resource.double_click_interval);
   config.setValue("session.autoRaiseDelay",
-          ((resource.auto_raise_delay.tv_sec * 1000) +
-           (resource.auto_raise_delay.tv_usec / 1000)));
+                  ((resource.auto_raise_delay.tv_sec * 1000) +
+                   (resource.auto_raise_delay.tv_usec / 1000)));
   config.setValue("session.cacheLife", (long)resource.cache_life / 60000);
   config.setValue("session.cacheMax", (long)resource.cache_max);
 
@@ -906,13 +916,6 @@ void Openbox::load() {
 
   std::string s;
   long l;
-  
-  if (resource.menu_file)
-    delete [] resource.menu_file;
-  if (config.getValue("session.menuFile", "Session.MenuFile", s))
-    resource.menu_file = bstrdup(s.c_str());
-  else
-    resource.menu_file = bstrdup(DEFAULTMENU);
 
   if (config.getValue("session.colorsPerChannel", "Session.ColorsPerChannel",
                       l))
@@ -940,7 +943,7 @@ void Openbox::load() {
   else
     resource.double_click_interval = 250;
 
-  if (!config.getValue("session.autoRaiseDelay", "Session.AutoRaiseDelay", l))
+  if (config.getValue("session.autoRaiseDelay", "Session.AutoRaiseDelay", l))
     resource.auto_raise_delay.tv_usec = l;
   else
     resource.auto_raise_delay.tv_usec = 400;
@@ -973,7 +976,7 @@ void Openbox::real_reconfigure() {
   grab();
 
   load();
-  
+
   for_each(menuTimestamps.begin(), menuTimestamps.end(),
            PointerAssassin());
   menuTimestamps.clear();
@@ -998,6 +1001,29 @@ void Openbox::checkMenu() {
 }
 
 
+void Openbox::addMenuTimestamp(const char *filename) {
+  bool found = false;
+
+  MenuTimestampList::iterator it;
+  for (it = menuTimestamps.begin(); it != menuTimestamps.end(); ++it)
+    if (! strcmp((*it)->filename, filename)) {
+      found = true;
+      break;
+    }
+  if (!found) {
+    struct stat buf;
+
+    if (! stat(filename, &buf)) {
+      MenuTimestamp *ts = new MenuTimestamp;
+
+      ts->filename = bstrdup(filename);
+      ts->timestamp = buf.st_ctime;
+
+      menuTimestamps.push_back(ts);
+    }
+  }
+}
+
 void Openbox::rereadMenu() {
   reread_menu_wait = True;
 
@@ -1024,30 +1050,6 @@ void Openbox::setStyleFilename(const char *filename) {
 }
 
 
-void Openbox::setMenuFilename(const char *filename) {
-  bool found = false;
-
-  MenuTimestampList::iterator it;
-  for (it = menuTimestamps.begin(); it != menuTimestamps.end(); ++it)
-    if (! strcmp((*it)->filename, filename)) {
-      found = true;
-      break;
-    }
-  if (!found) {
-    struct stat buf;
-
-    if (! stat(filename, &buf)) {
-      MenuTimestamp *ts = new MenuTimestamp;
-
-      ts->filename = bstrdup(filename);
-      ts->timestamp = buf.st_ctime;
-
-      menuTimestamps.push_back(ts);
-    }
-  }
-}
-
-
 void Openbox::timeout() {
   if (reconfigure_wait)
     real_reconfigure();
@@ -1060,12 +1062,11 @@ void Openbox::timeout() {
 
 
 OpenboxWindow *Openbox::focusedWindow() {
-  if (focused_screen == (BScreen *) 0)
-    return (OpenboxWindow *) 0;
-  Workspace *w = focused_screen->getCurrentWorkspace();
-  if (w == (Workspace *) 0)
-    return (OpenboxWindow *) 0;
-  return w->focusedWindow();
+  Workspace *w;
+  if (current_screen)
+    if ((w = current_screen->getCurrentWorkspace()))
+      return w->focusedWindow();
+  return (OpenboxWindow *) 0;
 }
 
 
@@ -1080,26 +1081,29 @@ void Openbox::focusWindow(OpenboxWindow *win) {
     old_wkspc = old_screen->getWorkspace(old_win->getWorkspaceNumber());
     old_tbar = old_screen->getToolbar();
 
-    old_win->setFocusFlag(False);
+    old_win->setFocusFlag(false);
     old_wkspc->focusWindow((OpenboxWindow *) 0);
   }
 
   if (win && !win->isIconic()) {
-    focused_screen = win->getScreen();
-    tbar = focused_screen->getToolbar();
-    wkspc = focused_screen->getWorkspace(win->getWorkspaceNumber());
+    current_screen = win->getScreen();
+    tbar = current_screen->getToolbar();
+    if (win->isStuck())
+      wkspc = current_screen->getCurrentWorkspace();
+    else
+      wkspc = current_screen->getWorkspace(win->getWorkspaceNumber());
     win->setFocusFlag(true);
     wkspc->focusWindow(win);
-    
+
     if (tbar)
       tbar->redrawWindowLabel(true);
-    focused_screen->updateNetizenWindowFocus();
-  //} else {
-  //  focused_window = (OpenboxWindow *) 0;
+    current_screen->updateNetizenWindowFocus();
+  } else {
+    XSetInputFocus(getXDisplay(), PointerRoot, None, CurrentTime);
   }
 
   if (old_tbar && old_tbar != tbar)
     old_tbar->redrawWindowLabel(true);
-  if (old_screen && old_screen != focused_screen)
+  if (old_screen && old_screen != current_screen)
     old_screen->updateNetizenWindowFocus();
 }
This page took 0.040082 seconds and 4 git commands to generate.