|
|
@ -2105,6 +2105,23 @@ bool Core::ClearKeyBindings(std::string keyspec)
|
|
|
|
|
|
|
|
|
|
|
|
bool Core::AddKeyBinding(std::string keyspec, std::string cmdline)
|
|
|
|
bool Core::AddKeyBinding(std::string keyspec, std::string cmdline)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
size_t at_pos = keyspec.find('@');
|
|
|
|
|
|
|
|
if (at_pos != std::string::npos)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
std::string raw_spec = keyspec.substr(0, at_pos);
|
|
|
|
|
|
|
|
std::string raw_focus = keyspec.substr(at_pos + 1);
|
|
|
|
|
|
|
|
if (raw_focus.find('|') != std::string::npos)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
std::vector<std::string> focus_strings;
|
|
|
|
|
|
|
|
split_string(&focus_strings, raw_focus, "|");
|
|
|
|
|
|
|
|
for (size_t i = 0; i < focus_strings.size(); i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (!AddKeyBinding(raw_spec + "@" + focus_strings[i], cmdline))
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
int sym;
|
|
|
|
int sym;
|
|
|
|
KeyBinding binding;
|
|
|
|
KeyBinding binding;
|
|
|
|
if (!parseKeySpec(keyspec, &sym, &binding.modifiers, &binding.focus))
|
|
|
|
if (!parseKeySpec(keyspec, &sym, &binding.modifiers, &binding.focus))
|
|
|
@ -2156,11 +2173,12 @@ std::vector<std::string> Core::ListKeyBindings(std::string keyspec)
|
|
|
|
return rv;
|
|
|
|
return rv;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
////////////////
|
|
|
|
|
|
|
|
// ClassNamCheck
|
|
|
|
|
|
|
|
////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Since there is no Process.cpp, put ClassNamCheck stuff in Core.cpp
|
|
|
|
/////////////////
|
|
|
|
|
|
|
|
// ClassNameCheck
|
|
|
|
|
|
|
|
/////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Since there is no Process.cpp, put ClassNameCheck stuff in Core.cpp
|
|
|
|
|
|
|
|
|
|
|
|
static std::set<std::string> known_class_names;
|
|
|
|
static std::set<std::string> known_class_names;
|
|
|
|
static std::map<std::string, void*> known_vptrs;
|
|
|
|
static std::map<std::string, void*> known_vptrs;
|
|
|
|