X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=util%2Fepist%2Factions.cc;h=e37ff2470602338e445b40ed65d9dac5510e61cc;hb=6ca5c5891a58c616b32b733c99fe373aa58bc360;hp=a36cf81514a11bce8717e84107af26e5fbd59c82;hpb=ba58f65d00d864f75b1f0cdfd2b60ec8882d2594;p=chaz%2Fopenbox diff --git a/util/epist/actions.cc b/util/epist/actions.cc index a36cf815..e37ff247 100644 --- a/util/epist/actions.cc +++ b/util/epist/actions.cc @@ -1,5 +1,52 @@ +// -*- mode: C++; indent-tabs-mode: nil; -*- +// actions.cc for Epistrophy - a key handler for NETWM/EWMH window managers. +// Copyright (c) 2002 - 2002 Ben Jansens +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + #include "actions.hh" -Action::Action(enum ActionType type, KeyCode keycode, int modifierMask): - _type(type), _keycode(keycode), _modifierMask(modifierMask) -{ } +Action::Action(enum ActionType type, KeyCode keycode, unsigned int modifierMask, + 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--; +}