فهرست منبع

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

This helps the window manager do the right thing with these windows.
Ryan C. Gordon 11 سال پیش
والد
کامیت
7fd15e7e2c
1فایلهای تغییر یافته به همراه8 افزوده شده و 0 حذف شده
  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 );