all repos — openbox @ 8ea3db574ad4fc3e8022d89045b66d4fe2597356

openbox fork - make it a bit more like ryudo

more fixes, better sanity detection and error messages. it shouldn't hog the keyboard in any case now. it won't grab when modifiers or keys are borked.
Marius Nita marius@cs.pdx.edu
commit

8ea3db574ad4fc3e8022d89045b66d4fe2597356

parent

2037631f753753a5c1ee9b2475b55658c3bb6eea

3 files changed, 21 insertions(+), 19 deletions(-)

jump to
M util/epist/keytree.ccutil/epist/keytree.cc

@@ -195,13 +195,8 @@ return;

} KeySym sym = XStringToKeysym(key.c_str()); + keynode *tmp = new keynode; - if (sym == 0) { - std::cerr << "Key " << key << " is invalid! (Action ignored)\n"; - return; - } - - keynode *tmp = new keynode; tmp->action = new Action(action, XKeysymToKeycode(_display, sym), mask, arg);

@@ -229,10 +224,10 @@ string key, string arg)

{ if (_current->action) delete _current->action; - + + KeySym sym = XStringToKeysym(key.c_str()); _current->action = new Action(action, - XKeysymToKeycode(_display, - XStringToKeysym(key.c_str())), + XKeysymToKeycode(_display, sym), mask, arg); }
M util/epist/parser.ccutil/epist/parser.cc

@@ -61,6 +61,18 @@ _kt->reset();

_kt->initialize(); } +void parser::setKey(string key) +{ + KeySym sym = XStringToKeysym(key.c_str()); + + if (sym == 0) { + std::cerr << "ERROR: Invalid key (" << key << ")! This may cause odd behavior.\n"; + _add = false; + } else { + _key = key; + } +} + void parser::setAction(string act) { struct {

@@ -189,14 +201,11 @@ }

void parser::setChainBinding() { - if (_mask != 0 && _key != "") { - if (!_add) { - cout << "Error: Bad modifier detected on chain's root key.\n"; - _add = true; - } + if (_add) _kt->setCurrentNodeProps(Action::noaction, _mask, _key, ""); - reset(); - } + + _add = true; + reset(); } void parser::reset()
M util/epist/parser.hhutil/epist/parser.hh

@@ -36,9 +36,6 @@ ~parser();

void parse(std::string); - void setKey(std::string key) - { _key = key; } - void setArgumentNum(std::string arg) { _arg = arg; }

@@ -57,6 +54,7 @@

void setOption(std::string opt) { _config->addOption(opt, _arg); } + void setKey(std::string); void setAction(std::string); void addModifier(std::string); void endAction();