X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=util%2Fepist%2Factions.cc;h=7a895be75e957ea5e74ab1a516850bcd3932f839;hb=652addd232e3f2a7c6c681b9669917e0a416331f;hp=493d02154ac5c685588fe7bb7fca7cf2b11e6cc8;hpb=c517f511000c8ec775f7413527b9e276b7995806;p=chaz%2Fopenbox diff --git a/util/epist/actions.cc b/util/epist/actions.cc index 493d0215..7a895be7 100644 --- a/util/epist/actions.cc +++ b/util/epist/actions.cc @@ -23,6 +23,30 @@ #include "actions.hh" Action::Action(enum ActionType type, KeyCode keycode, unsigned int modifierMask, - int num): _type(type), _keycode(keycode), - _modifierMask(modifierMask), _numberParam(num) -{ } + const std::string &str) + : _type(type), _keycode(keycode), _modifierMask(modifierMask) +{ + // These are the action types that take string arguments. This + // should probably be moved to a static member + ActionType str_types[] = { + execute, + nextWindowOfClass, + prevWindowOfClass, + nextWindowOfClassOnAllWorkspaces, + prevWindowOfClassOnAllWorkspaces, + noaction + }; + + for (int i = 0; str_types[i] != noaction; ++i) { + if (type == str_types[i]) { + _stringParam = str; + return; + } + } + + _numberParam = atoi( str.c_str() ); + + // workspace 1 to the user is workspace 0 to us + if (type == changeWorkspace || type == sendToWorkspace) + _numberParam--; +}