diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Window.cc | 10 |
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 | ||
2338 | void FluxboxWindow::mapNotifyEvent(XMapEvent &ne) { | 2340 | void 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: " |