Hans Leidekker : msi: Set the Preselected property if the default feature selection is modified in a dialog .

Alexandre Julliard julliard at winehq.org
Fri Dec 24 09:26:19 CST 2010


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Fri Dec 24 15:31:02 2010 +0100

msi: Set the Preselected property if the default feature selection is modified in a dialog.

---

 dlls/msi/events.c |   62 +++++++++++++++++++++++-----------------------------
 1 files changed, 27 insertions(+), 35 deletions(-)

diff --git a/dlls/msi/events.c b/dlls/msi/events.c
index 96fc677..b888c1c 100644
--- a/dlls/msi/events.c
+++ b/dlls/msi/events.c
@@ -163,58 +163,50 @@ static UINT ControlEvent_DoAction(MSIPACKAGE* package, LPCWSTR argument,
     return ERROR_SUCCESS;
 }
 
-static UINT ControlEvent_AddLocal(MSIPACKAGE* package, LPCWSTR argument, 
-                                  msi_dialog* dialog)
+static UINT ControlEvent_AddLocal( MSIPACKAGE *package, LPCWSTR argument, msi_dialog *dialog )
 {
-    MSIFEATURE *feature = NULL;
+    MSIFEATURE *feature;
 
-    if (strcmpW( szAll, argument ))
+    LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
     {
-        MSI_SetFeatureStateW(package,argument,INSTALLSTATE_LOCAL);
-    }
-    else
-    {
-        LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
-            msi_feature_set_state(package, feature, INSTALLSTATE_LOCAL);
-
-        ACTION_UpdateComponentStates(package,argument);
+        if (!strcmpW( argument, feature->Feature ) || !strcmpW( argument, szAll ))
+        {
+            if (feature->ActionRequest != INSTALLSTATE_LOCAL)
+                msi_set_property( package->db, szPreselected, szOne );
+            MSI_SetFeatureStateW( package, feature->Feature, INSTALLSTATE_LOCAL );
+        }
     }
     return ERROR_SUCCESS;
 }
 
-static UINT ControlEvent_Remove(MSIPACKAGE* package, LPCWSTR argument, 
-                                msi_dialog* dialog)
+static UINT ControlEvent_Remove( MSIPACKAGE *package, LPCWSTR argument, msi_dialog *dialog )
 {
-    MSIFEATURE *feature = NULL;
+    MSIFEATURE *feature;
 
-    if (strcmpW( szAll, argument ))
-    {
-        MSI_SetFeatureStateW(package,argument,INSTALLSTATE_ABSENT);
-    }
-    else
+    LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
     {
-        LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
-            msi_feature_set_state(package, feature, INSTALLSTATE_ABSENT);
-
-        ACTION_UpdateComponentStates(package,argument);
+        if (!strcmpW( argument, feature->Feature ) || !strcmpW( argument, szAll ))
+        {
+            if (feature->ActionRequest != INSTALLSTATE_ABSENT)
+                msi_set_property( package->db, szPreselected, szOne );
+            MSI_SetFeatureStateW( package, feature->Feature, INSTALLSTATE_ABSENT );
+        }
     }
     return ERROR_SUCCESS;
 }
 
-static UINT ControlEvent_AddSource(MSIPACKAGE* package, LPCWSTR argument, 
-                                   msi_dialog* dialog)
+static UINT ControlEvent_AddSource( MSIPACKAGE *package, LPCWSTR argument, msi_dialog *dialog )
 {
-    MSIFEATURE *feature = NULL;
+    MSIFEATURE *feature;
 
-    if (strcmpW( szAll, argument ))
+    LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
     {
-        MSI_SetFeatureStateW(package,argument,INSTALLSTATE_SOURCE);
-    }
-    else
-    {
-        LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
-            msi_feature_set_state(package, feature, INSTALLSTATE_SOURCE);
-        ACTION_UpdateComponentStates(package,argument);
+        if (!strcmpW( argument, feature->Feature ) || !strcmpW( argument, szAll ))
+        {
+            if (feature->ActionRequest != INSTALLSTATE_SOURCE)
+                msi_set_property( package->db, szPreselected, szOne );
+            MSI_SetFeatureStateW( package, feature->Feature, INSTALLSTATE_SOURCE );
+        }
     }
     return ERROR_SUCCESS;
 }




More information about the wine-cvs mailing list