added SendToNextWorkspace and SendToPrevWorkspace, patch from Mathias Gumz

This commit is contained in:
fluxgen 2004-02-20 19:40:31 +00:00
parent b566b0d970
commit afb137c788
3 changed files with 40 additions and 3 deletions

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: CurrentWindowCmd.cc,v 1.8 2003/10/26 12:36:55 fluxgen Exp $
// $Id: CurrentWindowCmd.cc,v 1.9 2004/02/20 19:40:31 fluxgen Exp $
#include "CurrentWindowCmd.hh"
@ -47,6 +47,19 @@ void SendToWorkspaceCmd::real_execute() {
fbwindow().screen().sendToWorkspace(m_workspace_num, &fbwindow());
}
void SendToNextWorkspaceCmd::real_execute() {
unsigned int workspace_num=
( fbwindow().screen().currentWorkspaceID() + m_workspace_num ) %
fbwindow().screen().getNumberOfWorkspaces();
fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow());
}
void SendToPrevWorkspaceCmd::real_execute() {
int workspace_num= fbwindow().screen().currentWorkspaceID() - m_workspace_num;
if ( workspace_num < 0 ) workspace_num+= fbwindow().screen().getNumberOfWorkspaces();
fbwindow().screen().sendToWorkspace(workspace_num, &fbwindow());
}
void WindowHelperCmd::execute() {
WinClient *client = Fluxbox::instance()->getFocusedWindow();
if (client && client->fbwindow()) // guarantee that fbwindow() exists too

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: CurrentWindowCmd.hh,v 1.6 2003/10/25 22:11:22 fluxgen Exp $
// $Id: CurrentWindowCmd.hh,v 1.7 2004/02/20 19:40:31 fluxgen Exp $
#ifndef CURRENTWINDOWCMD_HH
#define CURRENTWINDOWCMD_HH
@ -69,6 +69,24 @@ private:
const int m_workspace_num;
};
class SendToNextWorkspaceCmd: public WindowHelperCmd {
public:
explicit SendToNextWorkspaceCmd(int workspace_num):m_workspace_num(workspace_num) { }
protected:
void real_execute();
private:
const int m_workspace_num;
};
class SendToPrevWorkspaceCmd: public WindowHelperCmd {
public:
explicit SendToPrevWorkspaceCmd(int workspace_num):m_workspace_num(workspace_num) { }
protected:
void real_execute();
private:
const int m_workspace_num;
};
// move cmd, relative position
class MoveCmd: public WindowHelperCmd {
public:

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: FbCommandFactory.cc,v 1.26 2004/01/21 14:11:42 fluxgen Exp $
// $Id: FbCommandFactory.cc,v 1.27 2004/02/20 19:40:31 fluxgen Exp $
#include "FbCommandFactory.hh"
@ -108,6 +108,8 @@ FbCommandFactory::FbCommandFactory() {
"rootmenu",
"saverc",
"sendtoworkspace",
"sendtonextworkspace",
"sendtoprevworkspace",
"setstyle",
"setworkspacename",
"setworkspacenamedialog",
@ -235,6 +237,10 @@ FbTk::Command *FbCommandFactory::stringToCommand(const std::string &command,
return new CurrentWindowCmd(&FluxboxWindow::toggleDecoration);
else if (command == "sendtoworkspace")
return new SendToWorkspaceCmd(atoi(arguments.c_str()) - 1); // make 1-indexed to user
else if (command == "sendtonextworkspace")
return new SendToNextWorkspaceCmd(atoi(arguments.c_str()));
else if (command == "sendtoprevworkspace")
return new SendToPrevWorkspaceCmd(atoi(arguments.c_str()));
else if (command == "killwindow")
return new KillWindowCmd();
else if (command == "nexttab")