James Hawkins : msi: Provide the control to the dialog_update function for the case

Alexandre Julliard julliard at wine.codeweavers.com
Thu Sep 7 09:20:16 CDT 2006


Module: wine
Branch: master
Commit: 4e3f6eda0e3af2a226e50044dca7baf9f97e479f
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=4e3f6eda0e3af2a226e50044dca7baf9f97e479f

Author: James Hawkins <truiken at gmail.com>
Date:   Thu Aug 31 13:42:50 2006 -0700

msi: Provide the control to the dialog_update function for the case
when the control isn't attached to the dialog yet.

---

 dlls/msi/dialog.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
index f3b4987..6c1123b 100644
--- a/dlls/msi/dialog.c
+++ b/dlls/msi/dialog.c
@@ -1418,15 +1418,14 @@ static UINT msi_dialog_pathedit_handler(
     return ERROR_SUCCESS;
 }
 
-static void msi_dialog_update_pathedit( msi_dialog *dialog )
+static void msi_dialog_update_pathedit( msi_dialog *dialog, msi_control *control )
 {
-    msi_control *control;
     LPWSTR prop, path;
     BOOL indirect;
 
-    control = msi_dialog_find_control( dialog, szPathEdit );
-    if (!control)
+    if (!control && !(control = msi_dialog_find_control( dialog, szPathEdit ) ))
         return;
+
     indirect = control->attributes & msidbControlAttributesIndirect;
     prop = msi_dialog_dup_property( dialog, control->property, indirect );
 
@@ -1450,7 +1449,7 @@ static UINT msi_dialog_pathedit_control(
     prop = MSI_RecordGetString( rec, 9 );
     control->property = msi_dialog_dup_property( dialog, prop, FALSE );
 
-    msi_dialog_update_pathedit( dialog );
+    msi_dialog_update_pathedit( dialog, control );
 
     return ERROR_SUCCESS;
 }
@@ -1963,13 +1962,14 @@ static UINT msi_dialog_list_box( msi_dia
 
 /******************** Directory Combo ***************************************/
 
-static void msi_dialog_update_directory_combo( msi_dialog *dialog )
+static void msi_dialog_update_directory_combo( msi_dialog *dialog, msi_control *control )
 {
-    msi_control *control;
     LPWSTR prop, path;
     BOOL indirect;
 
-    control = msi_dialog_find_control( dialog, szDirectoryCombo );
+    if (!control && !(control = msi_dialog_find_control( dialog, szDirectoryCombo )))
+        return;
+
     indirect = control->attributes & msidbControlAttributesIndirect;
     prop = msi_dialog_dup_property( dialog, control->property, indirect );
     path = msi_dup_property( dialog->package, prop );
@@ -2001,7 +2001,7 @@ static UINT msi_dialog_directory_combo( 
     prop = MSI_RecordGetString( rec, 9 );
     control->property = msi_dialog_dup_property( dialog, prop, FALSE );
 
-    msi_dialog_update_directory_combo( dialog );
+    msi_dialog_update_directory_combo( dialog, control );
 
     return ERROR_SUCCESS;
 }
@@ -2027,8 +2027,8 @@ UINT msi_dialog_directorylist_up( msi_di
 
     MSI_SetPropertyW( dialog->package, prop, path );
 
-    msi_dialog_update_directory_combo( dialog );
-    msi_dialog_update_pathedit( dialog );
+    msi_dialog_update_directory_combo( dialog, NULL );
+    msi_dialog_update_pathedit( dialog, NULL );
 
     msi_free( path );
     msi_free( prop );




More information about the wine-cvs mailing list