diff options
author | markt <markt> | 2006-07-09 04:45:02 (GMT) |
---|---|---|
committer | markt <markt> | 2006-07-09 04:45:02 (GMT) |
commit | 8a640f8d638d1f330f816a2ed00931ba2d01847d (patch) | |
tree | 92e75171c47716a3a2b642c5298054ce8bc13a2b | |
parent | f7574fe1c90118ca7421dffef0b035cb64cf78c1 (diff) | |
download | fluxbox_lack-8a640f8d638d1f330f816a2ed00931ba2d01847d.zip fluxbox_lack-8a640f8d638d1f330f816a2ed00931ba2d01847d.tar.bz2 |
setting focus the right way
-rw-r--r-- | src/Screen.cc | 4 | ||||
-rw-r--r-- | src/Window.cc | 17 |
2 files changed, 8 insertions, 13 deletions
diff --git a/src/Screen.cc b/src/Screen.cc index d0accfc..c0d0706 100644 --- a/src/Screen.cc +++ b/src/Screen.cc | |||
@@ -1375,8 +1375,6 @@ FluxboxWindow *BScreen::createWindow(Window client) { | |||
1375 | // always put on end of focused list, if it gets focused it'll get pushed up | 1375 | // always put on end of focused list, if it gets focused it'll get pushed up |
1376 | // there is only the one win client at this stage | 1376 | // there is only the one win client at this stage |
1377 | focusControl().addFocusBack(*winclient); | 1377 | focusControl().addFocusBack(*winclient); |
1378 | if (focusControl().focusNew()) | ||
1379 | FocusControl::setFocusedWindow(winclient); | ||
1380 | 1378 | ||
1381 | // we also need to check if another window expects this window to the left | 1379 | // we also need to check if another window expects this window to the left |
1382 | // and if so, then join it. | 1380 | // and if so, then join it. |
@@ -1416,7 +1414,7 @@ FluxboxWindow *BScreen::createWindow(WinClient &client) { | |||
1416 | } | 1414 | } |
1417 | 1415 | ||
1418 | if (focusControl().focusNew() || FocusControl::focusedWindow() == &client) | 1416 | if (focusControl().focusNew() || FocusControl::focusedWindow() == &client) |
1419 | FocusControl::setFocusedWindow(&client); | 1417 | win->setInputFocus(); |
1420 | 1418 | ||
1421 | m_clientlist_sig.notify(); | 1419 | m_clientlist_sig.notify(); |
1422 | 1420 | ||
diff --git a/src/Window.cc b/src/Window.cc index 85d1ac6..d9c273a 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -2470,17 +2470,14 @@ void FluxboxWindow::mapNotifyEvent(XMapEvent &ne) { | |||
2470 | 2470 | ||
2471 | setState(NormalState, false); | 2471 | setState(NormalState, false); |
2472 | 2472 | ||
2473 | if (client->isTransient()) | 2473 | FluxboxWindow *cur = FocusControl::focusedFbWindow(); |
2474 | if (client->isTransient() || | ||
2475 | m_screen.currentWorkspace()->numberOfWindows() == 1 || | ||
2476 | m_screen.focusControl().focusNew() && !(cur && cur->isFullscreen())) | ||
2474 | setCurrentClient(*client, true); | 2477 | setCurrentClient(*client, true); |
2475 | else if (screen().focusControl().focusNew()) { | 2478 | else if (m_screen.focusControl().focusNew()) |
2476 | FluxboxWindow *cur = FocusControl::focusedFbWindow(); | 2479 | Fluxbox::instance()->attentionHandler().addAttention(*client); |
2477 | if (cur && cur->isFullscreen()) { | 2480 | |
2478 | setFocusFlag(false); | ||
2479 | Fluxbox::instance()->attentionHandler().addAttention(*client); | ||
2480 | } else | ||
2481 | setCurrentClient(*client, true); | ||
2482 | } else | ||
2483 | setFocusFlag(false); | ||
2484 | 2481 | ||
2485 | iconic = false; | 2482 | iconic = false; |
2486 | 2483 | ||