aboutsummaryrefslogtreecommitdiff
path: root/src/FbCommands.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/FbCommands.cc')
-rw-r--r--src/FbCommands.cc51
1 files changed, 50 insertions, 1 deletions
diff --git a/src/FbCommands.cc b/src/FbCommands.cc
index 99c8eca..e7d1986 100644
--- a/src/FbCommands.cc
+++ b/src/FbCommands.cc
@@ -19,13 +19,14 @@
19// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 19// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20// DEALINGS IN THE SOFTWARE. 20// DEALINGS IN THE SOFTWARE.
21 21
22// $Id: FbCommands.cc,v 1.23 2004/01/21 14:11:15 fluxgen Exp $ 22// $Id: FbCommands.cc,v 1.24 2004/04/22 21:12:32 fluxgen Exp $
23 23
24#include "FbCommands.hh" 24#include "FbCommands.hh"
25#include "fluxbox.hh" 25#include "fluxbox.hh"
26#include "Screen.hh" 26#include "Screen.hh"
27#include "CommandDialog.hh" 27#include "CommandDialog.hh"
28#include "Workspace.hh" 28#include "Workspace.hh"
29#include "Window.hh"
29#include "Keys.hh" 30#include "Keys.hh"
30 31
31#include "FbTk/Theme.hh" 32#include "FbTk/Theme.hh"
@@ -249,4 +250,52 @@ void BindKeyCmd::execute() {
249 } 250 }
250} 251}
251 252
253DeiconifyCmd::DeiconifyCmd(const Mode mode,
254 const Destination dest) : m_mode(mode), m_dest(dest) { }
255
256void DeiconifyCmd::execute() {
257 BScreen *screen = Fluxbox::instance()->mouseScreen();
258 if (screen == 0)
259 return;
260
261 BScreen::Icons::reverse_iterator it= screen->getIconList().rbegin();
262 BScreen::Icons::reverse_iterator itend= screen->getIconList().rend();
263 unsigned int workspace_num= screen->currentWorkspaceID();
264 unsigned int old_workspace_num;
265
266 const bool change_ws= m_dest == ORIGIN;
267
268 switch(m_mode) {
269
270 case ALL:
271 case ALLWORKSPACE:
272 for(; it != itend; it++) {
273 old_workspace_num= (*it)->workspaceNumber();
274 if (m_mode == ALL || old_workspace_num == workspace_num) {
275 if (m_dest == ORIGIN || m_dest == ORIGINQUIET)
276 screen->sendToWorkspace(old_workspace_num, (*it), change_ws);
277 else
278 (*it)->deiconify(false);
279 }
280 }
281 break;
282
283 case LAST:
284 case LASTWORKSPACE:
285 default:
286 for (; it != itend; it++) {
287 old_workspace_num= (*it)->workspaceNumber();
288 if(m_mode == LAST || old_workspace_num == workspace_num) {
289 if ((m_dest == ORIGIN || m_dest == ORIGINQUIET) &&
290 m_mode != LASTWORKSPACE)
291 screen->sendToWorkspace(old_workspace_num, (*it), change_ws);
292 else
293 (*it)->deiconify(false);
294 break;
295 }
296 }
297 break;
298 };
299}
300
252}; // end namespace FbCommands 301}; // end namespace FbCommands