oledlg: Copy the appropiate list to the display list.
diff --git a/dlls/oledlg/pastespl.c b/dlls/oledlg/pastespl.c index 47145b2..f62e4f4 100644 --- a/dlls/oledlg/pastespl.c +++ b/dlls/oledlg/pastespl.c
@@ -216,6 +216,35 @@ return items_added; } +/* copies src_list_id into the display list */ +static void update_display_list(HWND hdlg, UINT src_list_id) +{ + LONG count, i, old_pos; + WCHAR txt[256]; + LONG item_data; + HWND display_list = GetDlgItem(hdlg, IDC_PS_DISPLAYLIST); + HWND list = GetDlgItem(hdlg, src_list_id); + + old_pos = SendMessageW(display_list, LB_GETCURSEL, 0, 0); + if(old_pos == -1) old_pos = 0; + + SendMessageW(display_list, WM_SETREDRAW, 0, 0); + SendMessageW(display_list, LB_RESETCONTENT, 0, 0); + count = SendMessageW(list, LB_GETCOUNT, 0, 0); + for(i = 0; i < count; i++) + { + SendMessageW(list, LB_GETTEXT, i, (LPARAM)txt); + item_data = SendMessageW(list, LB_GETITEMDATA, i, 0); + SendMessageW(display_list, LB_INSERTSTRING, i, (LPARAM)txt); + SendMessageW(display_list, LB_SETITEMDATA, i, item_data); + } + old_pos = max(old_pos, count); + SendMessageW(display_list, LB_SETCURSEL, 0, 0); + SendMessageW(display_list, WM_SETREDRAW, 1, 0); + if(GetForegroundWindow() == hdlg) + SetFocus(display_list); +} + static void init_lists(HWND hdlg, ps_struct_t *ps_struct) { DWORD pastes_added = init_pastelist(hdlg, ps_struct->ps); @@ -252,6 +281,11 @@ } CheckRadioButton(hdlg, IDC_PS_PASTE, IDC_PS_PASTELINK, check_id); + + if(list_id) + update_display_list(hdlg, list_id); + else + EnableWindow(GetDlgItem(hdlg, IDOK), 0); } static void update_structure(HWND hdlg, ps_struct_t *ps_struct)