diff options
author | fluxgen <fluxgen> | 2006-02-18 11:39:38 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2006-02-18 11:39:38 (GMT) |
commit | 4d52797b955b8e38b9e49802981e69fb34a734bc (patch) | |
tree | d541712bb9720c47fa58fda7476528649c32fbca /src/fluxbox.cc | |
parent | d23eeeaa4e1ed5adb76d97eb47dd0b88b6dfed3f (diff) | |
download | fluxbox_pavel-4d52797b955b8e38b9e49802981e69fb34a734bc.zip fluxbox_pavel-4d52797b955b8e38b9e49802981e69fb34a734bc.tar.bz2 |
moved all focus handling to class FocusControl
Diffstat (limited to 'src/fluxbox.cc')
-rw-r--r-- | src/fluxbox.cc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index e69b519..cc9bbb2 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc | |||
@@ -34,6 +34,8 @@ | |||
34 | #include "WinClient.hh" | 34 | #include "WinClient.hh" |
35 | #include "Keys.hh" | 35 | #include "Keys.hh" |
36 | #include "FbAtoms.hh" | 36 | #include "FbAtoms.hh" |
37 | #include "FocusControl.hh" | ||
38 | |||
37 | #include "defaults.hh" | 39 | #include "defaults.hh" |
38 | 40 | ||
39 | #include "FbTk/I18n.hh" | 41 | #include "FbTk/I18n.hh" |
@@ -1050,9 +1052,9 @@ void Fluxbox::handleClientMessage(XClientMessageEvent &ce) { | |||
1050 | 1052 | ||
1051 | if (screen) { | 1053 | if (screen) { |
1052 | if (! ce.data.l[0]) | 1054 | if (! ce.data.l[0]) |
1053 | screen->prevFocus(); | 1055 | screen->focusControl().prevFocus(); |
1054 | else | 1056 | else |
1055 | screen->nextFocus(); | 1057 | screen->focusControl().nextFocus(); |
1056 | } | 1058 | } |
1057 | } else if (ce.message_type == m_fbatoms->getFluxboxChangeAttributesAtom()) { | 1059 | } else if (ce.message_type == m_fbatoms->getFluxboxChangeAttributesAtom()) { |
1058 | WinClient *winclient = searchWindow(ce.window); | 1060 | WinClient *winclient = searchWindow(ce.window); |
@@ -1887,18 +1889,18 @@ void Fluxbox::revertFocus(BScreen &screen) { | |||
1887 | // Relevant resources: | 1889 | // Relevant resources: |
1888 | // resource.focus_last = whether we focus last focused when changing workspace | 1890 | // resource.focus_last = whether we focus last focused when changing workspace |
1889 | // BScreen::FocusModel = sloppy, click, whatever | 1891 | // BScreen::FocusModel = sloppy, click, whatever |
1890 | WinClient *next_focus = screen.getLastFocusedWindow(screen.currentWorkspaceID()); | 1892 | WinClient *next_focus = screen.focusControl().lastFocusedWindow(screen.currentWorkspaceID()); |
1891 | 1893 | ||
1892 | // if setting focus fails, or isn't possible, fallback correctly | 1894 | // if setting focus fails, or isn't possible, fallback correctly |
1893 | if (!(next_focus && next_focus->fbwindow() && | 1895 | if (!(next_focus && next_focus->fbwindow() && |
1894 | next_focus->fbwindow()->setCurrentClient(*next_focus, true))) { | 1896 | next_focus->fbwindow()->setCurrentClient(*next_focus, true))) { |
1895 | setFocusedWindow(0); // so we don't get dangling m_focused_window pointer | 1897 | setFocusedWindow(0); // so we don't get dangling m_focused_window pointer |
1896 | switch (screen.getFocusModel()) { | 1898 | switch (screen.focusControl().focusModel()) { |
1897 | case BScreen::MOUSEFOCUS: | 1899 | case FocusControl::MOUSEFOCUS: |
1898 | XSetInputFocus(FbTk::App::instance()->display(), | 1900 | XSetInputFocus(FbTk::App::instance()->display(), |
1899 | PointerRoot, None, CurrentTime); | 1901 | PointerRoot, None, CurrentTime); |
1900 | break; | 1902 | break; |
1901 | case BScreen::CLICKFOCUS: | 1903 | case FocusControl::CLICKFOCUS: |
1902 | screen.rootWindow().setInputFocus(RevertToPointerRoot, CurrentTime); | 1904 | screen.rootWindow().setInputFocus(RevertToPointerRoot, CurrentTime); |
1903 | break; | 1905 | break; |
1904 | } | 1906 | } |
@@ -1942,7 +1944,7 @@ void Fluxbox::unfocusWindow(WinClient &client, bool full_revert, bool unfocus_fr | |||
1942 | BScreen &screen = fbwin->screen(); | 1944 | BScreen &screen = fbwin->screen(); |
1943 | 1945 | ||
1944 | if (!unfocus_frame) { | 1946 | if (!unfocus_frame) { |
1945 | WinClient *last_focus = screen.getLastFocusedWindow(*fbwin, &client); | 1947 | WinClient *last_focus = screen.focusControl().lastFocusedWindow(*fbwin, &client); |
1946 | if (last_focus != 0 && | 1948 | if (last_focus != 0 && |
1947 | fbwin->setCurrentClient(*last_focus, m_focused_window == &client)) { | 1949 | fbwin->setCurrentClient(*last_focus, m_focused_window == &client)) { |
1948 | return; | 1950 | return; |