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;
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;
case PropertyNotify: {
last_time = e->xproperty.time;
- BlackboxWindow *win = searchWindow(e->xproperty.window);
- if (win)
+ BlackboxWindow *win = (BlackboxWindow *) 0;
+ BScreen *screen = (BScreen *) 0;
+
+ if ((win = searchWindow(e->xproperty.window)))
win->propertyNotifyEvent(&e->xproperty);
+ else if ((screen = searchScreen(e->xproperty.window)))
+ screen->propertyNotifyEvent(&e->xproperty);
break;
}
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?
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);
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();
// 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
bool Blackbox::handleSignal(int sig) {
switch (sig) {
case SIGHUP:
- restart();
+ reconfigure();
break;
case SIGUSR1:
- reconfigure();
+ restart();
break;
case SIGUSR2:
}
-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())
}
-void Blackbox::saveDesktopWindowSearch(Window window, BScreen *screen) {
- desktopSearchList.insert(WindowScreenLookupPair(window, screen));
-}
-
-
void Blackbox::saveSystrayWindowSearch(Window window, BScreen *screen) {
systraySearchList.insert(WindowScreenLookupPair(window, screen));
}
}
-void Blackbox::removeDesktopWindowSearch(Window window) {
- desktopSearchList.erase(window);
-}
-
-
void Blackbox::removeSystrayWindowSearch(Window window) {
systraySearchList.erase(window);
}