if (place) placeWindow(w);
stackingList.push_front(w);
-
+
if (w->isNormal()) {
if (! sticky) {
w->setWorkspace(id);
if (screen->doFocusNew() || (w->isTransient() && w->getTransientFor() &&
w->getTransientFor()->isFocused())) {
- if (id == screen->getCurrentWorkspaceID())
- w->setInputFocus();
- else {
+ if (id != screen->getCurrentWorkspaceID()) {
/*
not on the focused workspace, so the window is not going to get focus
but if the user wants new windows focused, then it should get focus
void Workspace::show(void) {
- std::for_each(stackingList.begin(), stackingList.end(),
- std::mem_fun(&BlackboxWindow::show));
+ BlackboxWindowList::iterator it = stackingList.begin();
+ const BlackboxWindowList::iterator end = stackingList.end();
+ for (; it != end; ++it) {
+ BlackboxWindow *bw = *it;
+ // not normal windows cant focus from mouse enters anyways, so we dont
+ // need to unmap/remap them on workspace changes
+ if (! bw->isStuck() || bw->isNormal())
+ bw->show();
+ }
XSync(screen->getBlackbox()->getXDisplay(), False);