Xinqi Bao's Git
projects
/
dwm.git
/ commitdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
b975c47
)
fixed misappearance of iconified windows on SIGKILL
author
Anselm R. Garbe <
[email protected]
>
Sun, 19 Aug 2007 16:39:54 +0000
(18:39 +0200)
committer
Anselm R. Garbe <
[email protected]
>
Sun, 19 Aug 2007 16:39:54 +0000
(18:39 +0200)
main.c
patch
|
blob
|
history
screen.c
patch
|
blob
|
history
diff --git
a/main.c
b/main.c
index
b56e333
..
79b301d
100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-111,6
+111,24
@@
initfont(const char *fontstr) {
dc.font.height = dc.font.ascent + dc.font.descent;
}
dc.font.height = dc.font.ascent + dc.font.descent;
}
+static long
+getstate(Window w) {
+ int format, status;
+ long result = -1;
+ unsigned char *p = NULL;
+ unsigned long n, extra;
+ Atom real;
+
+ status = XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState],
+ &real, &format, &n, &extra, (unsigned char **)&p);
+ if(status != Success)
+ return -1;
+ if(n != 0)
+ result = *p;
+ XFree(p);
+ return result;
+}
+
static void
scan(void) {
unsigned int i, num;
static void
scan(void) {
unsigned int i, num;
@@
-123,7
+141,14
@@
scan(void) {
if(!XGetWindowAttributes(dpy, wins[i], &wa)
|| wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
continue;
if(!XGetWindowAttributes(dpy, wins[i], &wa)
|| wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
continue;
- if(wa.map_state == IsViewable)
+ if(wa.map_state == IsViewable || getstate(wins[i]) == IconicState)
+ manage(wins[i], &wa);
+ }
+ for(i = 0; i < num; i++) { /* now the transients */
+ if(!XGetWindowAttributes(dpy, wins[i], &wa))
+ continue;
+ if(XGetTransientForHint(dpy, wins[i], &d1)
+ && (wa.map_state == IsViewable || getstate(wins[i]) == IconicState))
manage(wins[i], &wa);
}
}
manage(wins[i], &wa);
}
}
diff --git
a/screen.c
b/screen.c
index
022633b
..
a8b093c
100644
(file)
--- a/
screen.c
+++ b/
screen.c
@@
-60,7
+60,7
@@
setdwmprops(void) {
for(i = 0; i < ntags && i < sizeof prop - 1; i++)
prop[i] = seltags[i] ? '1' : '0';
if(i < sizeof prop - 1)
for(i = 0; i < ntags && i < sizeof prop - 1; i++)
prop[i] = seltags[i] ? '1' : '0';
if(i < sizeof prop - 1)
- prop[i++] = (char)ltidx;
+ prop[i++] = (char)ltidx
+ '0'
;
prop[i] = '\0';
XChangeProperty(dpy, root, dwmprops, XA_STRING, 8,
PropModeReplace, (unsigned char *)prop, i);
prop[i] = '\0';
XChangeProperty(dpy, root, dwmprops, XA_STRING, 8,
PropModeReplace, (unsigned char *)prop, i);
@@
-223,8
+223,8
@@
getdwmprops(void) {
for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
seltags[i] = prop[i] == '1';
if(i < sizeof prop - 1 && prop[i] != '\0') {
for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
seltags[i] = prop[i] == '1';
if(i < sizeof prop - 1 && prop[i] != '\0') {
- if(
prop[i]
< nlayouts)
- ltidx = prop[i];
+ if(
(unsigned int)(prop[i] - '0')
< nlayouts)
+ ltidx = prop[i]
- '0'
;
}
}
}
}
}
}