Explorar el Código

X11: Set dialog hint on message boxes (thanks, Melker!).

This helps the window manager do the right thing with these windows.
Ryan C. Gordon hace 11 años
padre
commit
7fd15e7e2c
Se han modificado 1 ficheros con 8 adiciones y 0 borrados
  1. 8 0
      src/video/x11/SDL_x11messagebox.c

+ 8 - 0
src/video/x11/SDL_x11messagebox.c

@@ -366,6 +366,7 @@ X11_MessageBoxCreateWindow( SDL_MessageBoxDataX11 *data )
     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_MessageBoxCreateWindow( SDL_MessageBoxDataX11 *data )
 
     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 );