Commit 0746b907 authored by James Hawkins's avatar James Hawkins Committed by Alexandre Julliard

msi: Cleanup the dialog event subscriptions when destroying the dialog.

parent 0197c2c2
......@@ -3429,6 +3429,9 @@ void msi_dialog_destroy( msi_dialog *dialog )
if( dialog->hwnd )
DestroyWindow( dialog->hwnd );
/* unsubscribe events */
ControlEvent_CleanupDialogSubscriptions(dialog->package, dialog->name);
/* destroy the list of controls */
while( !list_empty( &dialog->controls ) )
{
......
......@@ -54,7 +54,6 @@ struct subscriber {
};
static UINT ControlEvent_HandleControlEvent(MSIPACKAGE *, LPCWSTR, LPCWSTR, msi_dialog*);
static VOID ControlEvent_CleanupDialogSubscriptions(MSIPACKAGE *package, LPWSTR dialog);
/*
* Create a dialog box and run it if it's modal
......@@ -321,7 +320,7 @@ VOID ControlEvent_FireSubscribedEvent( MSIPACKAGE *package, LPCWSTR event,
}
}
static VOID ControlEvent_CleanupDialogSubscriptions(MSIPACKAGE *package, LPWSTR dialog)
VOID ControlEvent_CleanupDialogSubscriptions(MSIPACKAGE *package, LPWSTR dialog)
{
struct list *i, *t;
struct subscriber *sub;
......
......@@ -781,6 +781,7 @@ extern void msi_ui_error( DWORD msg_id, DWORD type );
/* control event stuff */
extern VOID ControlEvent_FireSubscribedEvent(MSIPACKAGE *package, LPCWSTR event,
MSIRECORD *data);
extern VOID ControlEvent_CleanupDialogSubscriptions(MSIPACKAGE *package, LPWSTR dialog);
extern VOID ControlEvent_CleanupSubscriptions(MSIPACKAGE *package);
extern VOID ControlEvent_SubscribeToEvent(MSIPACKAGE *package, msi_dialog *dialog,
LPCWSTR event, LPCWSTR control, LPCWSTR attribute);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment