mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-27 11:52:03 +00:00
better mask handling, don't raise windows quite so eagerly.
This commit is contained in:
parent
2fc26be665
commit
2c1b986edf
3 changed files with 17 additions and 17 deletions
|
@ -23,11 +23,11 @@ setactive(Client *c, int on)
|
|||
XUngrabButton(dpy, AnyButton, AnyModifier, c->parent);
|
||||
XSetInputFocus(dpy, c->window, RevertToPointerRoot, timestamp());
|
||||
if (c->proto & Ptakefocus)
|
||||
sendcmessage(c->window, wm_protocols, wm_take_focus, 0, 0);
|
||||
sendcmessage(c->window, wm_protocols, wm_take_focus, 0, 1);
|
||||
cmapfocus(c);
|
||||
} else {
|
||||
if (c->proto & Plosefocus)
|
||||
sendcmessage(c->window, wm_protocols, wm_lose_focus, 0, 0);
|
||||
sendcmessage(c->window, wm_protocols, wm_lose_focus, 0, 1);
|
||||
XGrabButton(dpy, AnyButton, AnyModifier, c->parent, False,
|
||||
ButtonMask, GrabModeAsync, GrabModeSync, None, None);
|
||||
}
|
||||
|
|
|
@ -130,12 +130,6 @@ configurereq(XConfigureRequestEvent *e)
|
|||
if (e->value_mask & CWBorderWidth)
|
||||
c->border = e->border_width;
|
||||
gravitate(c, 0);
|
||||
if (e->value_mask & CWStackMode) {
|
||||
if (e->detail == Above)
|
||||
top(c);
|
||||
else
|
||||
e->value_mask &= ~CWStackMode;
|
||||
}
|
||||
if (c->parent != c->screen->root && c->window == e->window) {
|
||||
wc.x = c->x-BORDER;
|
||||
wc.y = c->y-BORDER;
|
||||
|
@ -146,8 +140,13 @@ configurereq(XConfigureRequestEvent *e)
|
|||
wc.stack_mode = e->detail;
|
||||
XConfigureWindow(dpy, c->parent, e->value_mask, &wc);
|
||||
sendconfig(c);
|
||||
top(c);
|
||||
active(c);
|
||||
}
|
||||
if (e->value_mask & CWStackMode) {
|
||||
if (wc.stack_mode == Above) {
|
||||
top(c);
|
||||
active(c);
|
||||
}else
|
||||
e->value_mask &= ~CWStackMode;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -411,13 +411,14 @@ sendcmessage(Window w, Atom a, long x, int isroot, int usemask)
|
|||
ev.xclient.format = 32;
|
||||
ev.xclient.data.l[0] = x;
|
||||
ev.xclient.data.l[1] = timestamp();
|
||||
if (usemask == 0)
|
||||
mask = 0;
|
||||
else if (isroot)
|
||||
mask = SubstructureRedirectMask; /* magic! */
|
||||
else
|
||||
mask = ExposureMask; /* not really correct but so be it */
|
||||
mask |= KeyPressMask; /* seems to be necessary */
|
||||
mask = 0;
|
||||
if(usemask){
|
||||
mask |= KeyPressMask; /* seems to be necessary */
|
||||
if (isroot)
|
||||
mask |= SubstructureRedirectMask; /* magic! */
|
||||
else
|
||||
mask |= ExposureMask; /* not really correct but so be it */
|
||||
}
|
||||
status = XSendEvent(dpy, w, False, mask, &ev);
|
||||
if (status == 0)
|
||||
fprintf(stderr, "rio: sendcmessage failed\n");
|
||||
|
|
Loading…
Reference in a new issue