diff options
Diffstat (limited to 'src/WorkspaceCmd.cc')
-rw-r--r-- | src/WorkspaceCmd.cc | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/src/WorkspaceCmd.cc b/src/WorkspaceCmd.cc index 79ceb40..26f113d 100644 --- a/src/WorkspaceCmd.cc +++ b/src/WorkspaceCmd.cc | |||
@@ -30,6 +30,7 @@ | |||
30 | #include "fluxbox.hh" | 30 | #include "fluxbox.hh" |
31 | #include "WinClient.hh" | 31 | #include "WinClient.hh" |
32 | #include "FocusControl.hh" | 32 | #include "FocusControl.hh" |
33 | #include "WindowCmd.hh" | ||
33 | 34 | ||
34 | #include "FbTk/KeyUtil.hh" | 35 | #include "FbTk/KeyUtil.hh" |
35 | 36 | ||
@@ -54,10 +55,54 @@ void WindowListCmd::execute() { | |||
54 | FocusControl::Focusables::iterator it = win_list.begin(), | 55 | FocusControl::Focusables::iterator it = win_list.begin(), |
55 | it_end = win_list.end(); | 56 | it_end = win_list.end(); |
56 | for (; it != it_end; ++it) { | 57 | for (; it != it_end; ++it) { |
57 | if (m_pat.match(**it) && (*it)->fbwindow()) | 58 | if (m_pat.match(**it) && (*it)->fbwindow()) { |
58 | m_cmd->execute(*(*it)->fbwindow()); | 59 | WindowCmd<void>::setWindow((*it)->fbwindow()); |
60 | m_cmd->execute(); | ||
61 | } | ||
62 | } | ||
63 | } | ||
64 | } | ||
65 | |||
66 | bool SomeCmd::bool_execute() { | ||
67 | if (m_pat.error()) | ||
68 | return m_cmd->bool_execute(); | ||
69 | |||
70 | BScreen *screen = Fluxbox::instance()->keyScreen(); | ||
71 | if (screen != 0) { | ||
72 | FocusControl::Focusables win_list(screen->focusControl().creationOrderList().clientList()); | ||
73 | |||
74 | FocusControl::Focusables::iterator it = win_list.begin(), | ||
75 | it_end = win_list.end(); | ||
76 | for (; it != it_end; ++it) { | ||
77 | WinClient *client = dynamic_cast<WinClient *>(*it); | ||
78 | if (!client) continue; | ||
79 | WindowCmd<void>::setClient(client); | ||
80 | if (m_cmd->bool_execute()) | ||
81 | return true; | ||
82 | } | ||
83 | } | ||
84 | return false; | ||
85 | } | ||
86 | |||
87 | bool EveryCmd::bool_execute() { | ||
88 | if (m_pat.error()) | ||
89 | return m_cmd->bool_execute(); | ||
90 | |||
91 | BScreen *screen = Fluxbox::instance()->keyScreen(); | ||
92 | if (screen != 0) { | ||
93 | FocusControl::Focusables win_list(screen->focusControl().creationOrderList().clientList()); | ||
94 | |||
95 | FocusControl::Focusables::iterator it = win_list.begin(), | ||
96 | it_end = win_list.end(); | ||
97 | for (; it != it_end; ++it) { | ||
98 | WinClient *client = dynamic_cast<WinClient *>(*it); | ||
99 | if (!client) continue; | ||
100 | WindowCmd<void>::setClient(client); | ||
101 | if (!m_cmd->bool_execute()) | ||
102 | return false; | ||
59 | } | 103 | } |
60 | } | 104 | } |
105 | return true; | ||
61 | } | 106 | } |
62 | 107 | ||
63 | void AttachCmd::execute() { | 108 | void AttachCmd::execute() { |