diff options
author | markt <markt> | 2007-08-20 14:32:03 (GMT) |
---|---|---|
committer | markt <markt> | 2007-08-20 14:32:03 (GMT) |
commit | 667d4d301441cb3ef7fdb189d383da084fb80b23 (patch) | |
tree | 609097a925add22687fc5cc67811a5545a88b967 | |
parent | 1b70e86e56b14b4200ddc35812aa16d827b9fe21 (diff) | |
download | fluxbox-667d4d301441cb3ef7fdb189d383da084fb80b23.zip fluxbox-667d4d301441cb3ef7fdb189d383da084fb80b23.tar.bz2 |
fix problems with focus order when changing workspaces
-rw-r--r-- | src/FocusControl.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/FocusControl.cc b/src/FocusControl.cc index 47a0a71..6ccc9a1 100644 --- a/src/FocusControl.cc +++ b/src/FocusControl.cc | |||
@@ -488,13 +488,16 @@ void FocusControl::revertFocus(BScreen &screen) { | |||
488 | if (s_reverting || screen.isShuttingdown()) | 488 | if (s_reverting || screen.isShuttingdown()) |
489 | return; | 489 | return; |
490 | 490 | ||
491 | FocusControl::s_reverting = true; | ||
492 | |||
493 | Focusable *next_focus = | 491 | Focusable *next_focus = |
494 | screen.focusControl().lastFocusedWindow(screen.currentWorkspaceID()); | 492 | screen.focusControl().lastFocusedWindow(screen.currentWorkspaceID()); |
495 | 493 | ||
494 | if (next_focus && next_focus->fbwindow() && | ||
495 | next_focus->fbwindow()->isStuck()) | ||
496 | FocusControl::s_reverting = true; | ||
497 | |||
496 | // if setting focus fails, or isn't possible, fallback correctly | 498 | // if setting focus fails, or isn't possible, fallback correctly |
497 | if (!(next_focus && next_focus->focus())) { | 499 | if (!(next_focus && next_focus->focus())) { |
500 | |||
498 | setFocusedWindow(0); // so we don't get dangling m_focused_window pointer | 501 | setFocusedWindow(0); // so we don't get dangling m_focused_window pointer |
499 | // if there's a menu open, focus it | 502 | // if there's a menu open, focus it |
500 | if (FbTk::Menu::shownMenu()) | 503 | if (FbTk::Menu::shownMenu()) |