diff options
Diffstat (limited to 'src/FocusableList.cc')
-rw-r--r-- | src/FocusableList.cc | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/FocusableList.cc b/src/FocusableList.cc index 094a9b5..b06faac 100644 --- a/src/FocusableList.cc +++ b/src/FocusableList.cc | |||
@@ -28,6 +28,7 @@ | |||
28 | #include "Window.hh" | 28 | #include "Window.hh" |
29 | 29 | ||
30 | #include "FbTk/StringUtil.hh" | 30 | #include "FbTk/StringUtil.hh" |
31 | #include "FbTk/MemFun.hh" | ||
31 | 32 | ||
32 | #include <vector> | 33 | #include <vector> |
33 | 34 | ||
@@ -95,8 +96,10 @@ void FocusableList::init() { | |||
95 | m_parent->attachChild(*this); | 96 | m_parent->attachChild(*this); |
96 | 97 | ||
97 | // TODO: can't handle (head=[mouse]) yet | 98 | // TODO: can't handle (head=[mouse]) yet |
98 | if (m_pat->dependsOnCurrentWorkspace()) | 99 | if (m_pat->dependsOnCurrentWorkspace()) { |
99 | m_screen.currentWorkspaceSig().attach(this); | 100 | join(m_screen.currentWorkspaceSig(), |
101 | FbTk::MemFun(*this, &FocusableList::workspaceChanged)); | ||
102 | } | ||
100 | if (m_pat->dependsOnFocusedWindow()) | 103 | if (m_pat->dependsOnFocusedWindow()) |
101 | m_screen.focusedWindowSig().attach(this); | 104 | m_screen.focusedWindowSig().attach(this); |
102 | } | 105 | } |
@@ -147,8 +150,7 @@ void FocusableList::update(FbTk::Subject *subj) { | |||
147 | if (insertFromParent(*win)) | 150 | if (insertFromParent(*win)) |
148 | m_ordersig.notify(win); | 151 | m_ordersig.notify(win); |
149 | } | 152 | } |
150 | } else if (subj == &m_screen.currentWorkspaceSig() || | 153 | } else if (subj == &m_screen.focusedWindowSig()) |
151 | subj == &m_screen.focusedWindowSig()) | ||
152 | reset(); | 154 | reset(); |
153 | } | 155 | } |
154 | 156 | ||
@@ -309,3 +311,7 @@ void FocusableList::attachChild(FocusableList &child) const { | |||
309 | m_resetsig.attach(&child); | 311 | m_resetsig.attach(&child); |
310 | m_ordersig.attach(&child); | 312 | m_ordersig.attach(&child); |
311 | } | 313 | } |
314 | |||
315 | void FocusableList::workspaceChanged(BScreen &screen) { | ||
316 | reset(); | ||
317 | } | ||