msi: Cleanup the dialog event subscriptions when destroying the dialog.
This commit is contained in:
parent
0197c2c292
commit
0746b9076d
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue