Peter Oberndorfer : msi: Do not store property for each listbox element, as it is the same one for the whole listbox.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Feb 6 15:23:13 CST 2007


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

Author: Peter Oberndorfer <kumbayo84 at arcor.de>
Date:   Tue Feb  6 20:01:05 2007 +0100

msi: Do not store property for each listbox element, as it is the same one for the whole listbox.

Remove struct msi_listbox_item as it only contains 1 element now.

---

 dlls/msi/dialog.c |   25 ++++++-------------------
 1 files changed, 6 insertions(+), 19 deletions(-)

diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
index 98777ac..f144427 100644
--- a/dlls/msi/dialog.c
+++ b/dlls/msi/dialog.c
@@ -2058,19 +2058,13 @@ static UINT msi_dialog_group_box( msi_di
 
 /******************** List Box ***************************************/
 
-struct msi_listbox_item
-{
-    LPWSTR property;
-    LPWSTR value;
-};
-
 struct msi_listbox_info
 {
     msi_dialog *dialog;
     HWND hwnd;
     WNDPROC oldproc;
     DWORD num_items;
-    struct msi_listbox_item *items;
+    LPWSTR *items;
 };
 
 static LRESULT WINAPI MSIListBox_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -2091,10 +2085,7 @@ static LRESULT WINAPI MSIListBox_WndProc
     {
     case WM_NCDESTROY:
         for (j = 0; j < info->num_items; j++)
-        {
-            msi_free( info->items[j].property );
-            msi_free( info->items[j].value );
-        }
+            msi_free( info->items[j] );
         msi_free( info->items );
         msi_free( info );
         RemovePropW( hWnd, szButtonData );
@@ -2107,20 +2098,16 @@ static LRESULT WINAPI MSIListBox_WndProc
 static UINT msi_listbox_add_item( MSIRECORD *rec, LPVOID param )
 {
     struct msi_listbox_info *info = param;
-    struct msi_listbox_item *item;
-    LPCWSTR property, value, text;
+    LPCWSTR value, text;
     static int index = 0;
 
-    item = &info->items[index++];
-    property = MSI_RecordGetString( rec, 1 );
     value = MSI_RecordGetString( rec, 3 );
     text = MSI_RecordGetString( rec, 4 );
 
-    item->property = strdupW( property );
-    item->value = strdupW( value );
+    info->items[index] = strdupW( value );
 
     SendMessageW( info->hwnd, LB_ADDSTRING, 0, (LPARAM)text );
-
+    index++;
     return ERROR_SUCCESS;
 }
 
@@ -2167,7 +2154,7 @@ static UINT msi_dialog_listbox_handler(
     index = SendMessageW( control->hwnd, LB_GETCURSEL, 0, 0 );
 
     MSI_SetPropertyW( info->dialog->package,
-                      info->items[index].property, info->items[index].value );
+                      control->property, info->items[index] );
     msi_dialog_evaluate_control_conditions( info->dialog );
 
     return ERROR_SUCCESS;




More information about the wine-cvs mailing list