Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51576 Signed-off-by: Fabian Maurer dark.shadow4@web.de --- dlls/msi/dialog.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c index 703f9d43957..6463c3062ac 100644 --- a/dlls/msi/dialog.c +++ b/dlls/msi/dialog.c @@ -3904,7 +3904,7 @@ static void process_pending_messages( HWND hdlg ) static UINT dialog_run_message_loop( msi_dialog *dialog ) { DWORD style; - HWND hwnd; + HWND hwnd, parent;
if( uiThreadId != GetCurrentThreadId() ) return SendMessageW( hMsiHiddenWindow, WM_MSI_DIALOG_CREATE, 0, (LPARAM) dialog ); @@ -3917,9 +3917,11 @@ static UINT dialog_run_message_loop( msi_dialog *dialog ) if (dialog->parent == NULL && (dialog->attributes & msidbDialogAttributesMinimize)) style |= WS_MINIMIZEBOX;
+ parent = dialog->parent ? dialog->parent->hwnd : 0; + hwnd = CreateWindowW( L"MsiDialogCloseClass", dialog->name, style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, - NULL, NULL, NULL, dialog ); + parent, NULL, NULL, dialog ); if( !hwnd ) { ERR("Failed to create dialog %s\n", debugstr_w( dialog->name )); -- 2.33.0
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51717 Signed-off-by: Fabian Maurer dark.shadow4@web.de --- dlls/msi/dialog.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c index 6463c3062ac..193ab84afd4 100644 --- a/dlls/msi/dialog.c +++ b/dlls/msi/dialog.c @@ -3881,6 +3881,10 @@ static LRESULT WINAPI MSIDialog_WndProc( HWND hwnd, UINT msg, return SendMessageW( (HWND) lParam, WM_CTLCOLORSTATIC, wParam, lParam );
case WM_DESTROY: + if (dialog->parent) + { + EnableWindow(dialog->parent->hwnd, TRUE); + } dialog->hwnd = NULL; return 0; case WM_NOTIFY: @@ -3928,6 +3932,11 @@ static UINT dialog_run_message_loop( msi_dialog *dialog ) return ERROR_FUNCTION_FAILED; }
+ if (parent) + { + EnableWindow(parent, FALSE); + } + ShowWindow( hwnd, SW_SHOW ); /* UpdateWindow( hwnd ); - and causes the transparent static controls not to paint */
-- 2.33.0
This last patch is a bit different. It fixes an issue, but I don't know enough about msi internals to tell how correct it is. If you don't mind, please take a look :)
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51718 --- dlls/msi/dialog.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c index 193ab84afd4..8f5e12e0d84 100644 --- a/dlls/msi/dialog.c +++ b/dlls/msi/dialog.c @@ -3885,6 +3885,10 @@ static LRESULT WINAPI MSIDialog_WndProc( HWND hwnd, UINT msg, { EnableWindow(dialog->parent->hwnd, TRUE); } + if (gUIhwnd == hwnd) + { + gUIhwnd = NULL; + } dialog->hwnd = NULL; return 0; case WM_NOTIFY: @@ -3932,6 +3936,11 @@ static UINT dialog_run_message_loop( msi_dialog *dialog ) return ERROR_FUNCTION_FAILED; }
+ if (!dialog->parent && !gUIhwnd) + { + gUIhwnd = hwnd; + } + if (parent) { EnableWindow(parent, FALSE); -- 2.33.0