X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fblackbox.cc;h=8dc7db838ff04656c43e2f3060176a055ec47347;hb=a939bb6e41772ffd4fe75f0c73ae79db237ca979;hp=3ec32d5208d5d1da86f47774c9ac2b54b1916d83;hpb=90dbcb271c5e6d7ca73c19a519b93885b833db0a;p=chaz%2Fopenbox diff --git a/src/blackbox.cc b/src/blackbox.cc index 3ec32d52..8dc7db83 100644 --- a/src/blackbox.cc +++ b/src/blackbox.cc @@ -384,8 +384,6 @@ void Blackbox::process_event(XEvent *e) { slit->unmapNotifyEvent(&e->xunmap); } else if ((screen = searchSystrayWindow(e->xunmap.window))) { screen->removeSystrayWindow(e->xunmap.window); - } else if ((screen = searchDesktopWindow(e->xunmap.window))) { - screen->removeDesktopWindow(e->xunmap.window); } break; @@ -405,8 +403,6 @@ void Blackbox::process_event(XEvent *e) { delete group; } else if ((screen = searchSystrayWindow(e->xunmap.window))) { screen->removeSystrayWindow(e->xunmap.window); - } else if ((screen = searchDesktopWindow(e->xunmap.window))) { - screen->removeDesktopWindow(e->xunmap.window); } break; @@ -494,7 +490,8 @@ void Blackbox::process_event(XEvent *e) { screen->getImageControl()->installRootColormap(); } else if ((win = searchWindow(e->xcrossing.window))) { if (win->getScreen()->isSloppyFocus() && - (! win->isFocused()) && (! no_focus)) { + (! win->isFocused()) && (! no_focus) && + win->isNormal()) { // don't focus non-normal windows with mouseover if (((! sa.leave) || sa.inferior) && win->isVisible()) { if (win->setInputFocus()) win->installColormap(True); // XXX: shouldnt we honour no install? @@ -705,17 +702,26 @@ void Blackbox::process_event(XEvent *e) { if (screen && workspace < screen->getWorkspaceCount()) screen->changeWorkspaceID(workspace); } else if (e->xclient.message_type == - xatom->getAtom(XAtom::blackbox_change_window_focus) || - e->xclient.message_type == + xatom->getAtom(XAtom::blackbox_change_window_focus)) { + // TEMP HACK TO KEEP BBKEYS WORKING + BlackboxWindow *win = searchWindow(e->xclient.window); + + if (win && win->isVisible() && win->setInputFocus()) + win->installColormap(True); + } else if (e->xclient.message_type == xatom->getAtom(XAtom::net_active_window)) { // NET_ACTIVE_WINDOW BlackboxWindow *win = searchWindow(e->xclient.window); if (win) { + BScreen *screen = win->getScreen(); + if (win->isIconic()) win->deiconify(False, True); if (win->isShaded()) win->shade(); + if (win->getWorkspaceNumber() != screen->getCurrentWorkspaceID()) + screen->changeWorkspaceID(win->getWorkspaceNumber()); if (win->isVisible() && win->setInputFocus()) { win->getScreen()->getWorkspace(win->getWorkspaceNumber())-> raiseWindow(win); @@ -749,7 +755,8 @@ void Blackbox::process_event(XEvent *e) { else win->show(); screen->reassociateWindow(win, wksp, True); - } else if (wksp == 0xfffffffe) { // XXX: BUG, BUT DOING THIS SO KDE WORKS FOR NOW!! + } else if (wksp == 0xfffffffe || // XXX: BUG, BUT DOING THIS SO KDE WORKS FOR NOW!! + wksp == 0xffffffff) { if (win->isIconic()) win->deiconify(False, True); if (! win->isStuck()) win->stick(); if (! win->isVisible()) win->show(); @@ -775,22 +782,8 @@ void Blackbox::process_event(XEvent *e) { // NET_NUMBER_OF_DESKTOPS BScreen *screen = searchScreen(e->xclient.window); - if (e->xclient.data.l[0] > 0) { - if ((unsigned) e->xclient.data.l[0] < screen->getWorkspaceCount()) { - // shrink - for (int i = screen->getWorkspaceCount(); - i > e->xclient.data.l[0]; --i) - screen->removeLastWorkspace(); - // removeLast already sets the current workspace to the - // last available one. - } else if ((unsigned) e->xclient.data.l[0] > - screen->getWorkspaceCount()) { - // grow - for(int i = screen->getWorkspaceCount(); - i < e->xclient.data.l[0]; ++i) - screen->addWorkspace(); - } - } + if (e->xclient.data.l[0] > 0) + screen->changeWorkspaceCount((unsigned) e->xclient.data.l[0]); } else if (e->xclient.message_type == xatom->getAtom(XAtom::net_close_window)) { // NET_CLOSE_WINDOW @@ -978,11 +971,11 @@ void Blackbox::process_event(XEvent *e) { bool Blackbox::handleSignal(int sig) { switch (sig) { case SIGHUP: - restart(); + reconfigure(); break; case SIGUSR1: - reconfigure(); + restart(); break; case SIGUSR2: @@ -1029,15 +1022,6 @@ BScreen *Blackbox::searchScreen(Window window) { } -BScreen *Blackbox::searchDesktopWindow(Window window) { - WindowScreenLookup::iterator it = desktopSearchList.find(window); - if (it != desktopSearchList.end()) - return it->second; - - return (BScreen*) 0; -} - - BScreen *Blackbox::searchSystrayWindow(Window window) { WindowScreenLookup::iterator it = systraySearchList.find(window); if (it != systraySearchList.end()) @@ -1092,11 +1076,6 @@ Slit *Blackbox::searchSlit(Window window) { } -void Blackbox::saveDesktopWindowSearch(Window window, BScreen *screen) { - desktopSearchList.insert(WindowScreenLookupPair(window, screen)); -} - - void Blackbox::saveSystrayWindowSearch(Window window, BScreen *screen) { systraySearchList.insert(WindowScreenLookupPair(window, screen)); } @@ -1127,11 +1106,6 @@ void Blackbox::saveSlitSearch(Window window, Slit *data) { } -void Blackbox::removeDesktopWindowSearch(Window window) { - desktopSearchList.erase(window); -} - - void Blackbox::removeSystrayWindowSearch(Window window) { systraySearchList.erase(window); }