This commit is contained in:
seanpringle
2012-08-31 17:59:43 +10:00
parent 56d11f240e
commit 826826f192

View File

@@ -838,6 +838,7 @@ int main(int argc, char *argv[])
root = DefaultRootWindow(display); root = DefaultRootWindow(display);
xerror = XSetErrorHandler(oops); xerror = XSetErrorHandler(oops);
// default non-multi-head setup
monitors[0].x = 0; monitors[0].x = 0;
monitors[0].y = 0; monitors[0].y = 0;
monitors[0].w = WidthOfScreen(screen); monitors[0].w = WidthOfScreen(screen);
@@ -846,6 +847,7 @@ int main(int argc, char *argv[])
XSelectInput(display, root, StructureNotifyMask | SubstructureRedirectMask | SubstructureNotifyMask); XSelectInput(display, root, StructureNotifyMask | SubstructureRedirectMask | SubstructureNotifyMask);
// figure out NumlockMask
XModifierKeymap *modmap = XGetModifierMapping(display); XModifierKeymap *modmap = XGetModifierMapping(display);
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
for (j = 0; j < (int)modmap->max_keypermod; j++) for (j = 0; j < (int)modmap->max_keypermod; j++)
@@ -853,6 +855,7 @@ int main(int argc, char *argv[])
{ NumlockMask = (1<<i); break; } { NumlockMask = (1<<i); break; }
XFreeModifiermap(modmap); XFreeModifiermap(modmap);
// process config.h key bindings
for (i = 0; i < sizeof(keys)/sizeof(binding); i++) for (i = 0; i < sizeof(keys)/sizeof(binding); i++)
{ {
XGrabKey(display, XKeysymToKeycode(display, keys[i].key), keys[i].mod, root, XGrabKey(display, XKeysymToKeycode(display, keys[i].key), keys[i].mod, root,
@@ -868,6 +871,7 @@ int main(int argc, char *argv[])
True, GrabModeAsync, GrabModeAsync); True, GrabModeAsync, GrabModeAsync);
} }
// we grab buttons to do click-to-focus. all clicks get passed through to apps.
XGrabButton(display, Button1, AnyModifier, root, True, ButtonPressMask, GrabModeSync, GrabModeSync, None, None); XGrabButton(display, Button1, AnyModifier, root, True, ButtonPressMask, GrabModeSync, GrabModeSync, None, None);
XGrabButton(display, Button3, AnyModifier, root, True, ButtonPressMask, GrabModeSync, GrabModeSync, None, None); XGrabButton(display, Button3, AnyModifier, root, True, ButtonPressMask, GrabModeSync, GrabModeSync, None, None);
@@ -876,7 +880,7 @@ int main(int argc, char *argv[])
stack wins; stack wins;
memset(&wins, 0, sizeof(stack)); memset(&wins, 0, sizeof(stack));
// panel struts // detect panel struts
windows_visible(&wins); windows_visible(&wins);
inplay.depth = 0; inplay.depth = 0;
for (i = 0; i < wins.depth; i++) for (i = 0; i < wins.depth; i++)
@@ -910,11 +914,13 @@ int main(int argc, char *argv[])
monitors[i].w = info[i].width; monitors[i].w = info[i].width;
monitors[i].h = info[i].height - struts[TOP] - struts[BOTTOM]; monitors[i].h = info[i].height - struts[TOP] - struts[BOTTOM];
// left struts affect first monitor
if (!i) if (!i)
{ {
monitors[i].x += struts[LEFT]; monitors[i].x += struts[LEFT];
monitors[i].w -= struts[LEFT]; monitors[i].w -= struts[LEFT];
} }
// right struts affect last monitor
if (i == nmonitors-1) if (i == nmonitors-1)
{ {
monitors[i].w -= struts[RIGHT]; monitors[i].w -= struts[RIGHT];
@@ -923,7 +929,7 @@ int main(int argc, char *argv[])
XFree(info); XFree(info);
} }
} }
// setup exiting managable windows // setup existing managable windows
windows_visible(&wins); windows_visible(&wins);
inplay.depth = 0; inplay.depth = 0;
for (i = 0; i < wins.depth; i++) for (i = 0; i < wins.depth; i++)
@@ -932,6 +938,7 @@ int main(int argc, char *argv[])
if (c && c->manage) if (c && c->manage)
{ {
window_listen(c->window); window_listen(c->window);
// activate first one
if (!current && c->visible) if (!current && c->visible)
{ {
client_active(c); client_active(c);