commit 5cd55b0

Devine Lu Linvega  ·  2025-02-20 17:34:40 +0000 UTC
parent 48986c8
Make window floating
1 files changed,  +14, -5
+14, -5
 1@@ -184,10 +184,20 @@ display_hidecursor(void)
 2 	XFreePixmap(display, bitmap);
 3 }
 4 
 5+static void
 6+display_floating(Display *dpy, Window win)
 7+{
 8+	Atom wmDelete = XInternAtom(display, "WM_DELETE_WINDOW", True);
 9+	Atom wmType = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
10+	Atom wmDialog = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
11+	XSetWMProtocols(display, window, &wmDelete, 1);
12+	XChangeProperty(dpy, win, wmType, 4, 32, PropModeReplace, (unsigned char *)&wmDialog, 1);
13+}
14+
15 static int
16 display_init(void)
17 {
18-	Atom wmDelete;
19+
20 	Visual *visual;
21 	XClassHint class = {"uxn11", "Uxn"};
22 	/* start display */
23@@ -199,13 +209,12 @@ display_init(void)
24 	if(visual->class != TrueColor)
25 		return system_error("init", "True-color visual failed");
26 	window = XCreateSimpleWindow(display, RootWindow(display, 0), 0, 0, WIDTH, HEIGHT, 1, 0, 0);
27+	display_hidecursor();
28+	display_floating(display, window);
29 	XSelectInput(display, window, ButtonPressMask | ButtonReleaseMask | PointerMotionMask | ExposureMask | KeyPressMask | KeyReleaseMask);
30-	wmDelete = XInternAtom(display, "WM_DELETE_WINDOW", True);
31-	XSetWMProtocols(display, window, &wmDelete, 1);
32 	XStoreName(display, window, "uxn11");
33 	XSetClassHint(display, window, &class);
34 	XMapWindow(display, window);
35-	display_hidecursor();
36 	screen_resize(WIDTH, HEIGHT, 1);
37 	return 1;
38 }
39@@ -253,7 +262,7 @@ main(int argc, char **argv)
40 {
41 	int i = 1;
42 	if(argc == 2 && argv[1][0] == '-' && argv[1][1] == 'v')
43-		return !fprintf(stdout, "Uxn11 - Varvara Emulator, 14 Feb 2025.\n");
44+		return !fprintf(stdout, "Uxn11 - Varvara Emulator, 20 Feb 2025.\n");
45 	else if(argc == 1)
46 		return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
47 	else if(!display_init())