diff options
Diffstat (limited to 'src/CurrentWindowCmd.cc')
-rw-r--r-- | src/CurrentWindowCmd.cc | 46 |
1 files changed, 20 insertions, 26 deletions
diff --git a/src/CurrentWindowCmd.cc b/src/CurrentWindowCmd.cc index b6c3c0e..4a60e63 100644 --- a/src/CurrentWindowCmd.cc +++ b/src/CurrentWindowCmd.cc | |||
@@ -31,17 +31,24 @@ | |||
31 | 31 | ||
32 | #include "FocusControl.hh" | 32 | #include "FocusControl.hh" |
33 | 33 | ||
34 | CurrentWindowCmd::CurrentWindowCmd(Action act):m_action(act) { } | 34 | void WindowHelperCmd::execute() { |
35 | m_win = 0; | ||
36 | if (FocusControl::focusedFbWindow()) // guarantee that fbwindow() exists too | ||
37 | real_execute(); | ||
38 | } | ||
35 | 39 | ||
36 | void CurrentWindowCmd::execute() { | 40 | void WindowHelperCmd::execute(FluxboxWindow &win) { |
37 | FluxboxWindow *win = FocusControl::focusedFbWindow(); | 41 | m_win = &win; |
38 | if (win) | 42 | real_execute(); |
39 | (win->*m_action)(); | ||
40 | } | 43 | } |
41 | 44 | ||
45 | FluxboxWindow &WindowHelperCmd::fbwindow() { | ||
46 | // will exist from execute above | ||
47 | return (m_win ? *m_win : *FocusControl::focusedFbWindow()); | ||
48 | } | ||
42 | 49 | ||
43 | void KillWindowCmd::real_execute() { | 50 | void CurrentWindowCmd::real_execute() { |
44 | winclient().sendClose(true); | 51 | (fbwindow().*m_action)(); |
45 | } | 52 | } |
46 | 53 | ||
47 | void SetHeadCmd::real_execute() { | 54 | void SetHeadCmd::real_execute() { |
@@ -54,13 +61,14 @@ void SendToWorkspaceCmd::real_execute() { | |||
54 | 61 | ||
55 | void SendToNextWorkspaceCmd::real_execute() { | 62 | void SendToNextWorkspaceCmd::real_execute() { |
56 | const int ws_nr = | 63 | const int ws_nr = |
57 | ( fbwindow().screen().currentWorkspaceID() + m_workspace_num ) % | 64 | ( fbwindow().workspaceNumber() + m_workspace_num ) % |
58 | fbwindow().screen().numberOfWorkspaces(); | 65 | fbwindow().screen().numberOfWorkspaces(); |
59 | fbwindow().screen().sendToWorkspace(ws_nr, &fbwindow(), false); | 66 | fbwindow().screen().sendToWorkspace(ws_nr, &fbwindow(), false); |
60 | } | 67 | } |
61 | 68 | ||
62 | void SendToPrevWorkspaceCmd::real_execute() { | 69 | void SendToPrevWorkspaceCmd::real_execute() { |
63 | int ws_nr = fbwindow().screen().currentWorkspaceID() - m_workspace_num; | 70 | int ws_nr = (fbwindow().workspaceNumber() - m_workspace_num) % |
71 | fbwindow().screen().numberOfWorkspaces(); | ||
64 | if ( ws_nr < 0 ) | 72 | if ( ws_nr < 0 ) |
65 | ws_nr += fbwindow().screen().numberOfWorkspaces(); | 73 | ws_nr += fbwindow().screen().numberOfWorkspaces(); |
66 | fbwindow().screen().sendToWorkspace(ws_nr, &fbwindow(), false); | 74 | fbwindow().screen().sendToWorkspace(ws_nr, &fbwindow(), false); |
@@ -72,13 +80,14 @@ void TakeToWorkspaceCmd::real_execute() { | |||
72 | 80 | ||
73 | void TakeToNextWorkspaceCmd::real_execute() { | 81 | void TakeToNextWorkspaceCmd::real_execute() { |
74 | unsigned int workspace_num= | 82 | unsigned int workspace_num= |
75 | ( fbwindow().screen().currentWorkspaceID() + m_workspace_num ) % | 83 | ( fbwindow().workspaceNumber() + m_workspace_num ) % |
76 | fbwindow().screen().numberOfWorkspaces(); | 84 | fbwindow().screen().numberOfWorkspaces(); |
77 | fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow()); | 85 | fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow()); |
78 | } | 86 | } |
79 | 87 | ||
80 | void TakeToPrevWorkspaceCmd::real_execute() { | 88 | void TakeToPrevWorkspaceCmd::real_execute() { |
81 | int workspace_num= fbwindow().screen().currentWorkspaceID() - m_workspace_num; | 89 | int workspace_num = (fbwindow().workspaceNumber() - m_workspace_num) % |
90 | fbwindow().screen().numberOfWorkspaces(); | ||
82 | if ( workspace_num < 0 ) | 91 | if ( workspace_num < 0 ) |
83 | workspace_num += fbwindow().screen().numberOfWorkspaces(); | 92 | workspace_num += fbwindow().screen().numberOfWorkspaces(); |
84 | fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow()); | 93 | fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow()); |
@@ -97,21 +106,6 @@ void GoToTabCmd::real_execute() { | |||
97 | (*it)->focus(); | 106 | (*it)->focus(); |
98 | } | 107 | } |
99 | 108 | ||
100 | void WindowHelperCmd::execute() { | ||
101 | if (FocusControl::focusedFbWindow()) // guarantee that fbwindow() exists too | ||
102 | real_execute(); | ||
103 | } | ||
104 | |||
105 | WinClient &WindowHelperCmd::winclient() { | ||
106 | // will exist from execute above | ||
107 | return *FocusControl::focusedWindow(); | ||
108 | } | ||
109 | |||
110 | FluxboxWindow &WindowHelperCmd::fbwindow() { | ||
111 | // will exist from execute above | ||
112 | return *FocusControl::focusedFbWindow(); | ||
113 | } | ||
114 | |||
115 | MoveCmd::MoveCmd(const int step_size_x, const int step_size_y) : | 109 | MoveCmd::MoveCmd(const int step_size_x, const int step_size_y) : |
116 | m_step_size_x(step_size_x), m_step_size_y(step_size_y) { } | 110 | m_step_size_x(step_size_x), m_step_size_y(step_size_y) { } |
117 | 111 | ||