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.
This commit is contained in:
parent
79d2f76b8e
commit
69448afdc7
|
@ -2058,19 +2058,13 @@ static UINT msi_dialog_group_box( msi_dialog *dialog, MSIRECORD *rec )
|
||||||
|
|
||||||
/******************** List Box ***************************************/
|
/******************** List Box ***************************************/
|
||||||
|
|
||||||
struct msi_listbox_item
|
|
||||||
{
|
|
||||||
LPWSTR property;
|
|
||||||
LPWSTR value;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct msi_listbox_info
|
struct msi_listbox_info
|
||||||
{
|
{
|
||||||
msi_dialog *dialog;
|
msi_dialog *dialog;
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
WNDPROC oldproc;
|
WNDPROC oldproc;
|
||||||
DWORD num_items;
|
DWORD num_items;
|
||||||
struct msi_listbox_item *items;
|
LPWSTR *items;
|
||||||
};
|
};
|
||||||
|
|
||||||
static LRESULT WINAPI MSIListBox_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
static LRESULT WINAPI MSIListBox_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
|
@ -2091,10 +2085,7 @@ static LRESULT WINAPI MSIListBox_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPA
|
||||||
{
|
{
|
||||||
case WM_NCDESTROY:
|
case WM_NCDESTROY:
|
||||||
for (j = 0; j < info->num_items; j++)
|
for (j = 0; j < info->num_items; j++)
|
||||||
{
|
msi_free( info->items[j] );
|
||||||
msi_free( info->items[j].property );
|
|
||||||
msi_free( info->items[j].value );
|
|
||||||
}
|
|
||||||
msi_free( info->items );
|
msi_free( info->items );
|
||||||
msi_free( info );
|
msi_free( info );
|
||||||
RemovePropW( hWnd, szButtonData );
|
RemovePropW( hWnd, szButtonData );
|
||||||
|
@ -2107,20 +2098,16 @@ static LRESULT WINAPI MSIListBox_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPA
|
||||||
static UINT msi_listbox_add_item( MSIRECORD *rec, LPVOID param )
|
static UINT msi_listbox_add_item( MSIRECORD *rec, LPVOID param )
|
||||||
{
|
{
|
||||||
struct msi_listbox_info *info = param;
|
struct msi_listbox_info *info = param;
|
||||||
struct msi_listbox_item *item;
|
LPCWSTR value, text;
|
||||||
LPCWSTR property, value, text;
|
|
||||||
static int index = 0;
|
static int index = 0;
|
||||||
|
|
||||||
item = &info->items[index++];
|
|
||||||
property = MSI_RecordGetString( rec, 1 );
|
|
||||||
value = MSI_RecordGetString( rec, 3 );
|
value = MSI_RecordGetString( rec, 3 );
|
||||||
text = MSI_RecordGetString( rec, 4 );
|
text = MSI_RecordGetString( rec, 4 );
|
||||||
|
|
||||||
item->property = strdupW( property );
|
info->items[index] = strdupW( value );
|
||||||
item->value = strdupW( value );
|
|
||||||
|
|
||||||
SendMessageW( info->hwnd, LB_ADDSTRING, 0, (LPARAM)text );
|
SendMessageW( info->hwnd, LB_ADDSTRING, 0, (LPARAM)text );
|
||||||
|
index++;
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2167,7 +2154,7 @@ static UINT msi_dialog_listbox_handler( msi_dialog *dialog,
|
||||||
index = SendMessageW( control->hwnd, LB_GETCURSEL, 0, 0 );
|
index = SendMessageW( control->hwnd, LB_GETCURSEL, 0, 0 );
|
||||||
|
|
||||||
MSI_SetPropertyW( info->dialog->package,
|
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 );
|
msi_dialog_evaluate_control_conditions( info->dialog );
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
|
|
Loading…
Reference in New Issue