msi: Refreh controls after spawned dialog is closed.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alistair Leslie-Hughes 2016-01-22 20:49:30 +11:00 committed by Alexandre Julliard
parent e90b34e131
commit 434f0f7cb1
1 changed files with 16 additions and 1 deletions

View File

@ -556,6 +556,17 @@ static void msi_dialog_update_controls( msi_dialog *dialog, LPCWSTR property )
}
}
static void msi_dialog_update_all_controls( msi_dialog *dialog )
{
msi_control *control;
LIST_FOR_EACH_ENTRY( control, &dialog->controls, msi_control, entry )
{
if ( control->property && control->update )
control->update( dialog, control );
}
}
static void msi_dialog_set_property( MSIPACKAGE *package, LPCWSTR property, LPCWSTR value )
{
UINT r = msi_set_property( package->db, property, value, -1 );
@ -4389,7 +4400,11 @@ static UINT event_spawn_dialog( msi_dialog *dialog, const WCHAR *argument )
{
/* don't destroy a modeless dialogs that might be our parent */
event_do_dialog( dialog->package, argument, dialog, FALSE );
if (dialog->package->CurrentInstallState != ERROR_SUCCESS) msi_dialog_end_dialog( dialog );
if (dialog->package->CurrentInstallState != ERROR_SUCCESS)
msi_dialog_end_dialog( dialog );
else
msi_dialog_update_all_controls(dialog);
return ERROR_SUCCESS;
}