Răsfoiți Sursa

windows: msgboxes should specify a parent HWND if possible (thanks, Ismael!).

This lets them be properly modal.

Fixes Bugzilla #3650.
Ryan C. Gordon 8 ani în urmă
părinte
comite
3fbd21ce40
1 a modificat fișierele cu 8 adăugiri și 2 ștergeri
  1. 8 2
      src/video/windows/SDL_windowsmessagebox.c

+ 8 - 2
src/video/windows/SDL_windowsmessagebox.c

@@ -354,6 +354,7 @@ WIN_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
     wchar_t* wmessage;
     TEXTMETRIC TM;
 
+    HWND ParentWindow = NULL;
 
     const int ButtonWidth = 88;
     const int ButtonHeight = 26;
@@ -469,8 +470,13 @@ WIN_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
         x += ButtonWidth + ButtonMargin;
     }
 
-    /* FIXME: If we have a parent window, get the Instance and HWND for them */
-    which = DialogBoxIndirect(NULL, (DLGTEMPLATE*)dialog->lpDialog, NULL, (DLGPROC)MessageBoxDialogProc);
+    /* If we have a parent window, get the Instance and HWND for them
+     * so that our little dialog gets exclusive focus at all times. */
+    if (messageboxdata->window)
+        ParentWindow = ((SDL_WindowData*)messageboxdata->window->driverdata)->hwnd;
+
+
+    which = DialogBoxIndirect(NULL, (DLGTEMPLATE*)dialog->lpDialog, ParentWindow, (DLGPROC)MessageBoxDialogProc);
     *buttonid = buttons[which].buttonid;
 
     FreeDialogData(dialog);