summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Window.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/Window.cc b/src/Window.cc
index 413ffcc..46530b7 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -668,9 +668,11 @@ void FluxboxWindow::attachClient(WinClient &client, int x, int y) {
668 // and we don't seem to get a FocusIn event from setInputFocus 668 // and we don't seem to get a FocusIn event from setInputFocus
669 setCurrentClient(client); 669 setCurrentClient(client);
670 FocusControl::setFocusedWindow(&client); 670 FocusControl::setFocusedWindow(&client);
671 } else if (focused_win) 671 } else if (focused_win) {
672 setCurrentClient(*focused_win, false); 672 setCurrentClient(*focused_win, false);
673 else 673 if (isIconic() && screen().focusControl().focusNew() && !Fluxbox::instance()->isStartup())
674 deiconify();
675 } else
674 // reparenting puts the new client on top, but the old client is keeping 676 // reparenting puts the new client on top, but the old client is keeping
675 // the focus, so we raise it 677 // the focus, so we raise it
676 m_client->raise(); 678 m_client->raise();
@@ -1501,7 +1503,7 @@ void FluxboxWindow::deiconify(bool reassoc, bool do_raise) {
1501 (*client_it)->setEventMask(PropertyChangeMask | StructureNotifyMask | FocusChangeMask); 1503 (*client_it)->setEventMask(PropertyChangeMask | StructureNotifyMask | FocusChangeMask);
1502 } 1504 }
1503 1505
1504 if (reassoc && !m_client->transients.empty()) { 1506 if (reassoc) {
1505 // deiconify all transients 1507 // deiconify all transients
1506 client_it = clientList().begin(); 1508 client_it = clientList().begin();
1507 for (; client_it != client_it_end; ++client_it) { 1509 for (; client_it != client_it_end; ++client_it) {
@@ -2337,7 +2339,7 @@ void FluxboxWindow::mapRequestEvent(XMapRequestEvent &re) {
2337 2339
2338void FluxboxWindow::mapNotifyEvent(XMapEvent &ne) { 2340void FluxboxWindow::mapNotifyEvent(XMapEvent &ne) {
2339 WinClient *client = findClient(ne.window); 2341 WinClient *client = findClient(ne.window);
2340 if (client == 0) 2342 if (client == 0 || client != m_client)
2341 return; 2343 return;
2342#ifdef DEBUG 2344#ifdef DEBUG
2343 cerr<<"FluxboxWindow::mapNotifyEvent: " 2345 cerr<<"FluxboxWindow::mapNotifyEvent: "