Skip to content

Commit

Permalink
Drop grabVKey and fixupPreferences. Move unshift to WMKey grab.
Browse files Browse the repository at this point in the history
  • Loading branch information
gijsbers committed Feb 4, 2025
1 parent 53c4243 commit 63bcffc
Show file tree
Hide file tree
Showing 11 changed files with 14 additions and 102 deletions.
12 changes: 0 additions & 12 deletions src/wmapp.cc
Original file line number Diff line number Diff line change
Expand Up @@ -506,16 +506,6 @@ void YWMApp::reparseKeyPrefs() {
}
}

void YWMApp::fixupPreferences() {
extern cfoption icewm_preferences[];
for (cfoption* op = icewm_preferences; op->type; ++op) {
if (op->type == cfoption::CF_KEY) {
WMKey* key = op->v.k.key_value;
xapp->unshift(&key->key, &key->mod);
}
}
}

void LogoutMenu::updatePopup() {
if (itemCount())
return;
Expand Down Expand Up @@ -1327,8 +1317,6 @@ YWMApp::YWMApp(int *argc, char ***argv, const char *displayName,
if (show_extensions)
showExtensions();

fixupPreferences();

DEPRECATE(xrrDisable == true);
DEPRECATE(warpPointer == true);
DEPRECATE(focusRootWindow == true);
Expand Down
1 change: 0 additions & 1 deletion src/wmapp.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,6 @@ class YWMApp:
void initIcons();
void initIconSize();
void reparseKeyPrefs();
void fixupPreferences();
};

extern YWMApp * wmapp;
Expand Down
7 changes: 4 additions & 3 deletions src/wmkey.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ bool WMKey::set(const char* arg) {
else {
unsigned ks = 0;
unsigned short mo = 0;
if (xapp->parseKey(arg, &ks, &mo)) {
if (YConfig::parseKey(arg, &ks, &mo)) {
if (initial == false)
delete[] const_cast<char *>(name);
name = newstr(arg);
Expand All @@ -33,7 +33,7 @@ bool WMKey::set(const char* arg) {
bool WMKey::parse() {
if (nonempty(name)) {
key = mod = xmod = kc = 0;
return xapp->parseKey(name, &key, &mod);
return YConfig::parseKey(name, &key, &mod);
} else {
return false;
}
Expand Down Expand Up @@ -83,7 +83,8 @@ void WMKey::grab(int handle) {
return;
}
}
if (kc == 0) {
if (kc == 0 && key) {
xapp->unshift(&key, &xmod);
kc = XKeysymToKeycode(xapp->display(), KeySym(key));
}
if (kc) {
Expand Down
4 changes: 2 additions & 2 deletions src/wmkey.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ struct WMKey {
WMKey() : key(0), mod(0), xmod(0), name(""), kc(0), initial(true) { }
WMKey(char* s) : key(0), mod(0), xmod(0), name(s), kc(0), initial(false) {
parse(); }
WMKey(KeySym k, unsigned short m, const char* s) :
WMKey(unsigned k, unsigned short m, const char* s) :
key(k), mod(m), xmod(0), name(s), kc(0), initial(true) { }

bool eq(KeySym k, unsigned short m) const { return key == k && mod == m; }
bool eq(unsigned k, unsigned short m) const { return key == k && mod == m; }
bool operator==(const WMKey& o) const { return eq(o.key, o.mod); }
bool operator!=(const WMKey& o) const { return !eq(o.key, o.mod); }
bool parse();
Expand Down
4 changes: 2 additions & 2 deletions src/wmmenu.cc
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ static mstring guessIconNameFromExe(const char* exe)
return "-";
}

char* MenuLoader::parseKey(char *word, char *p)
char* MenuLoader::parseAKey(char *word, char *p)
{
bool runonce = !strcmp(word, "runonce");
bool switchkey = !strcmp(word, "switchkey");
Expand Down Expand Up @@ -417,7 +417,7 @@ char* MenuLoader::parseWord(char *word, char *p, ObjectContainer *container)
|| !strcmp(word, "runonce")
|| !strcmp(word, "switchkey"))
{
p = parseKey(word, p);
p = parseAKey(word, p);
}
else {
msg(_("Unknown keyword for a non-container: '%s'.\n"
Expand Down
5 changes: 3 additions & 2 deletions src/wmmgr.cc
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,9 @@ void YWindowManager::grabKeys() {
grab(gKeySysKeyboardNext);

{
for (KProgram* k : keyProgs) {
grabVKey(k->key(), k->modifiers());
int win = handle();
for (KProgram* kp : keyProgs) {
kp->grab(win);
}
}
if (xapp->WinMask && win95keys) {
Expand Down
5 changes: 2 additions & 3 deletions src/wmprog.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class MenuLoader {
char* parseMenuFile(char *data, ObjectContainer *container);
char* parseMenuProg(char *data, ObjectContainer *container);
char* parseMenuProgReload(char *data, ObjectContainer *container);
char* parseKey(char *word, char *p);
char* parseAKey(char *word, char *p);
char* parseProgram(char *word, char *p, ObjectContainer *container);
char* parseWord(char *word, char *p, ObjectContainer *container);

Expand Down Expand Up @@ -177,8 +177,7 @@ class KProgram {
return wm.eq(key, mod);
}
void open(unsigned mods);
KeySym key() const { return wm.key; }
unsigned modifiers() const { return wm.mod; }
void grab(int handle) { wm.grab(handle); }

private:
WMKey wm;
Expand Down
69 changes: 1 addition & 68 deletions src/ywindow.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1702,74 +1702,7 @@ YDesktop::~YDesktop() {
}

void YWindow::grab(struct WMKey& wmkey) {
grabVKey(wmkey.key, wmkey.mod);
}

void YWindow::grabVKey(unsigned key, unsigned vm) {
if (key) {
if (vm == 0) {
grabKey(key, 0);
} else {
unsigned m = 0;
bool ok = true;

if (vm & kfShift)
m |= ShiftMask;
if (vm & kfCtrl)
m |= ControlMask;
if (vm & kfAlt) {
if (xapp->AltMask)
m |= xapp->AltMask;
else
ok = false;
}
if (vm & kfMeta) {
if (xapp->MetaMask)
m |= xapp->MetaMask;
else
ok = false;
}
if (vm & kfSuper) {
if (xapp->SuperMask)
m |= xapp->SuperMask;
else
ok = false;
}
if (vm & kfHyper) {
if (xapp->HyperMask)
m |= xapp->HyperMask;
else
ok = false;
}
if (vm & kfAltGr) {
if (xapp->ModeSwitchMask)
m |= xapp->ModeSwitchMask;
else
ok = false;
}

MSG(("grabVKey k=0x%04x v=0x%02x m=0x%02x o=%d", key, vm, m, ok));
if (m && ok) {
grabKey(key, m);

// !!! recheck this
if (modSuperIsCtrlAlt && xapp->WinMask &&
hasbits(vm, kfAlt | kfCtrl))
{
m = xapp->WinMask;
if (vm & kfShift)
m |= ShiftMask;
if (vm & kfSuper)
m |= xapp->SuperMask;
if (vm & kfHyper)
m |= xapp->HyperMask;
if (vm & kfAltGr)
m |= xapp->ModeSwitchMask;
grabKey(key, m);
}
}
}
}
wmkey.grab(handle());
}

void YWindow::grabVButton(int button, unsigned int vm) {
Expand Down
1 change: 0 additions & 1 deletion src/ywindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,6 @@ class YWindow : protected YWindowList, private YWindowNode {
void setPointer(Cursor pointer);
void grabKeyM(unsigned key, unsigned modifiers);
void grabKey(unsigned key, unsigned modifiers);
void grabVKey(unsigned key, unsigned modifiers);
void grab(struct WMKey& wmkey);
unsigned VMod(unsigned modifiers);
void grabButtonM(int button, unsigned modifiers);
Expand Down
7 changes: 0 additions & 7 deletions src/yxapp.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1395,13 +1395,6 @@ void YXApplication::queryMouse(int* x, int* y) {
*x = *y = 0;
}

bool YXApplication::parseKey(const char* arg, unsigned* key, unsigned short* mod) {
bool yes = YConfig::parseKey(arg, key, mod);
if (yes)
unshift(key, mod);
return yes;
}

void YXApplication::unshift(unsigned* ksym, unsigned short* mod) {
const unsigned key = unsigned(*ksym);
if ((' ' < key && key < 'a') || ('z' < key && key <= 0xFF) ||
Expand Down
1 change: 0 additions & 1 deletion src/yxapp.h
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,6 @@ class YXApplication: public YApplication {
return mask == buttonModMask(state);
}
unsigned keyCodeToKeySym(unsigned keycode, unsigned index = 0);
bool parseKey(const char* arg, unsigned* key, unsigned short* mod);
void unshift(unsigned* key, unsigned short* mod);
YKeycodeMap getKeycodeMap();

Expand Down

0 comments on commit 63bcffc

Please sign in to comment.