[PATCH] msi: In dialogs show show titlebar buttons

Fabian Maurer dark.shadow4 at web.de
Sat Nov 3 12:05:28 CDT 2018


Implemented according to my tests on windows with a bunch of msi files:
-All dialogs have a close box, which acts like cancel
-Main Dialogs can have a minimize box
-When clicking cancel, that new dialog must never have a minimize box

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46080
Signed-off-by: Fabian Maurer <dark.shadow4 at web.de>
---
 dlls/msi/dialog.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
index 6184da84f1..a3797c2c04 100644
--- a/dlls/msi/dialog.c
+++ b/dlls/msi/dialog.c
@@ -3858,6 +3858,10 @@ static LRESULT WINAPI MSIDialog_WndProc( HWND hwnd, UINT msg,
     case WM_COMMAND:
         return msi_dialog_oncommand( dialog, wParam, (HWND)lParam );
 
+    case WM_CLOSE:
+        /* Simulate escape press */
+        return msi_dialog_oncommand(dialog, 2, NULL);
+
     case WM_ACTIVATE:
         if( LOWORD(wParam) == WA_INACTIVE )
             dialog->hWndFocus = GetFocus();
@@ -3903,10 +3907,13 @@ static UINT dialog_run_message_loop( msi_dialog *dialog )
         return SendMessageW( hMsiHiddenWindow, WM_MSI_DIALOG_CREATE, 0, (LPARAM) dialog );
 
     /* create the dialog window, don't show it yet */
-    style = WS_OVERLAPPED;
+    style = WS_OVERLAPPED | WS_SYSMENU;
     if( dialog->attributes & msidbDialogAttributesVisible )
         style |= WS_VISIBLE;
 
+    if (dialog->parent == NULL && (dialog->attributes & msidbDialogAttributesMinimize))
+        style |= WS_MINIMIZEBOX;
+
     hwnd = CreateWindowW( szMsiDialogClass, dialog->name, style,
                      CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                      NULL, NULL, NULL, dialog );
-- 
2.19.1




More information about the wine-devel mailing list