| @@ -419,6 +419,52 @@ init(void) | |||
| } | |||
| /** | |||
| * Remove window border/decorations. | |||
| */ | |||
| static void | |||
| no_border( Display *dpy, Window w) | |||
| { | |||
| static const unsigned MWM_HINTS_DECORATIONS = (1 << 1); | |||
| static const int PROP_MOTIF_WM_HINTS_ELEMENTS = 5; | |||
| typedef struct | |||
| { | |||
| unsigned long flags; | |||
| unsigned long functions; | |||
| unsigned long decorations; | |||
| long inputMode; | |||
| unsigned long status; | |||
| } PropMotifWmHints; | |||
| PropMotifWmHints motif_hints; | |||
| Atom prop, proptype; | |||
| unsigned long flags = 0; | |||
| /* setup the property */ | |||
| motif_hints.flags = MWM_HINTS_DECORATIONS; | |||
| motif_hints.decorations = flags; | |||
| /* get the atom for the property */ | |||
| prop = XInternAtom( dpy, "_MOTIF_WM_HINTS", True ); | |||
| if (!prop) { | |||
| /* something went wrong! */ | |||
| return; | |||
| } | |||
| /* not sure this is correct, seems to work, XA_WM_HINTS didn't work */ | |||
| proptype = prop; | |||
| XChangeProperty( dpy, w, /* display, window */ | |||
| prop, proptype, /* property, type */ | |||
| 32, /* format: 32-bit datums */ | |||
| PropModeReplace, /* mode */ | |||
| (unsigned char *) &motif_hints, /* data */ | |||
| PROP_MOTIF_WM_HINTS_ELEMENTS /* nelements */ | |||
| ); | |||
| } | |||
| /* | |||
| * Create an RGB, double-buffered window. | |||
| * Return the window and context handles. | |||
| @@ -479,13 +525,15 @@ make_window( Display *dpy, const char *name, | |||
| attr.colormap = XCreateColormap( dpy, root, visinfo->visual, AllocNone); | |||
| attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; | |||
| /* XXX this is a bad way to get a borderless window! */ | |||
| attr.override_redirect = fullscreen; | |||
| mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask | CWOverrideRedirect; | |||
| mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; | |||
| win = XCreateWindow( dpy, root, x, y, width, height, | |||
| 0, visinfo->depth, InputOutput, | |||
| visinfo->visual, mask, &attr ); | |||
| if (fullscreen) | |||
| no_border(dpy, win); | |||
| /* set hints and properties */ | |||
| { | |||
| XSizeHints sizehints; | |||