X11: Set dialog hint on message boxes (thanks, Melker!).
authorRyan C. Gordon <icculus@icculus.org>
Wed, 11 Feb 2015 01:48:52 -0500
changeset 9339 45c49e8c9416
parent 9338 86bc1c9a090f
child 9340 af5be9462bb4
X11: Set dialog hint on message boxes (thanks, Melker!). This helps the window manager do the right thing with these windows.
src/video/x11/SDL_x11messagebox.c
--- a/src/video/x11/SDL_x11messagebox.c	Tue Feb 10 20:40:03 2015 +0100
+++ b/src/video/x11/SDL_x11messagebox.c	Wed Feb 11 01:48:52 2015 -0500
@@ -366,6 +366,7 @@
     int x, y;
     XSizeHints *sizehints;
     XSetWindowAttributes wnd_attr;
+    Atom _NET_WM_WINDOW_TYPE, _NET_WM_WINDOW_TYPE_DIALOG;
     Display *display = data->display;
     SDL_WindowData *windowdata = NULL;
     const SDL_MessageBoxData *messageboxdata = data->messageboxdata;
@@ -401,6 +402,13 @@
 
     X11_XStoreName( display, data->window, messageboxdata->title );
 
+    /* Let the window manager know this is a dialog box */
+    _NET_WM_WINDOW_TYPE = X11_XInternAtom(display, "_NET_WM_WINDOW_TYPE", False);
+    _NET_WM_WINDOW_TYPE_DIALOG = X11_XInternAtom(display, "_NET_WM_WINDOW_TYPE_DIALOG", False);
+    X11_XChangeProperty(display, data->window, _NET_WM_WINDOW_TYPE, XA_ATOM, 32,
+                    PropModeReplace,
+                    (unsigned char *)&_NET_WM_WINDOW_TYPE_DIALOG, 1);
+
     /* Allow the window to be deleted by the window manager */
     data->wm_protocols = X11_XInternAtom( display, "WM_PROTOCOLS", False );
     data->wm_delete_message = X11_XInternAtom( display, "WM_DELETE_WINDOW", False );