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