aboutsummaryrefslogtreecommitdiff
path: root/src/FocusableList.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/FocusableList.cc')
-rw-r--r--src/FocusableList.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/FocusableList.cc b/src/FocusableList.cc
index d15e10a..98492b8 100644
--- a/src/FocusableList.cc
+++ b/src/FocusableList.cc
@@ -156,10 +156,12 @@ void FocusableList::checkUpdate(Focusable &win) {
156 if (contains(win)) { 156 if (contains(win)) {
157 if (!m_pat->match(win)) { 157 if (!m_pat->match(win)) {
158 m_list.remove(&win); 158 m_list.remove(&win);
159 m_pat->removeMatch();
159 m_removesig.notify(&win); 160 m_removesig.notify(&win);
160 } 161 }
161 } else if (m_pat->match(win)) { 162 } else if (m_pat->match(win)) {
162 insertFromParent(win); 163 insertFromParent(win);
164 m_pat->addMatch();
163 m_addsig.notify(&win); 165 m_addsig.notify(&win);
164 } 166 }
165} 167}
@@ -194,9 +196,10 @@ void FocusableList::addMatching() {
194 const Focusables list = m_parent->clientList(); 196 const Focusables list = m_parent->clientList();
195 Focusables::const_iterator it = list.begin(), it_end = list.end(); 197 Focusables::const_iterator it = list.begin(), it_end = list.end();
196 for (; it != it_end; ++it) { 198 for (; it != it_end; ++it) {
197 if (m_pat->match(**it)) 199 if (m_pat->match(**it)) {
198 pushBack(**it); 200 pushBack(**it);
199 else // we still want to watch it, in case it changes to match 201 m_pat->addMatch();
202 } else // we still want to watch it, in case it changes to match
200 attachSignals(**it); 203 attachSignals(**it);
201 } 204 }
202} 205}
@@ -279,6 +282,7 @@ void FocusableList::reset() {
279 detachSignals(*m_list.back()); 282 detachSignals(*m_list.back());
280 m_list.pop_back(); 283 m_list.pop_back();
281 } 284 }
285 m_pat->resetMatches();
282 if (m_parent) 286 if (m_parent)
283 addMatching(); 287 addMatching();
284 m_resetsig.notify(0); 288 m_resetsig.notify(0);