fix keyboard lockup on client initiated unmap event, tweak desktop switching and monitor refresh

This commit is contained in:
Iris Lightshard 2022-03-08 23:18:48 -07:00
parent 4eea9b7aab
commit 16ed0f7f24
Signed by: Iris Lightshard
GPG key ID: 3B7FBC22144E6398
3 changed files with 10 additions and 7 deletions

View file

@ -109,8 +109,7 @@ void nofocus(void) {
static Window w = 0;
int mask;
XSetWindowAttributes attr;
Client* c;
/*Client* c;
if (current) {
setactive(current, 0);
for (c = current->revert; c; c = c->revert)
@ -119,9 +118,8 @@ void nofocus(void) {
return;
}
cmapnofocus(current->screen);
/* if no candidates to revert to, fall through */
}
current = 0;
current = 0;*/
if (w == 0) {
mask = CWOverrideRedirect /*|CWColormap*/;
attr.override_redirect = 1;

View file

@ -49,6 +49,7 @@ void mainloop(int shape_event) {
break;
}
for (c = clients; c; c = c->next) {
monitor = getmonitorbyclient(c);
wrangle(c, monitorinfo[monitor]);
}
}
@ -272,6 +273,7 @@ void unmap(XUnmapEvent* e) {
break;
case NormalState:
if (c == current) {
nofocus();
if (revertc = getclient(getrevert(c), 0)) {
top(revertc);
active(revertc);

9
menu.c
View file

@ -513,9 +513,12 @@ void switch_to(int n) {
switch_to_c(n, clients);
current = currents[virt];
ensureactive();
active(current);
top(current);
if (current) {
active(current);
top(current);
} else {
nofocus();
}
#ifdef VIRTNOTIFY
sprintf(virtmsg, VIRTMSG, b2items[virt]);