From a67ad872e3f08090e76f21760cd705bfdfa986f6 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Wed, 18 Oct 2006 21:42:33 +0100 Subject: [PATCH] oledlg: Logic for initial selection of paste/pastelink radio buttons. --- dlls/oledlg/pastespl.c | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/dlls/oledlg/pastespl.c b/dlls/oledlg/pastespl.c index cbfd76431a0..47145b2426e 100644 --- a/dlls/oledlg/pastespl.c +++ b/dlls/oledlg/pastespl.c @@ -218,8 +218,40 @@ static DWORD init_linklist(HWND hdlg, OLEUIPASTESPECIALW *ps) static void init_lists(HWND hdlg, ps_struct_t *ps_struct) { - init_pastelist(hdlg, ps_struct->ps); - init_linklist(hdlg, ps_struct->ps); + DWORD pastes_added = init_pastelist(hdlg, ps_struct->ps); + DWORD links_added = init_linklist(hdlg, ps_struct->ps); + UINT check_id, list_id; + + if((ps_struct->flags & (PSF_SELECTPASTE | PSF_SELECTPASTELINK)) == 0) + ps_struct->flags |= PSF_SELECTPASTE; + + if(!pastes_added && !links_added) + ps_struct->flags &= ~(PSF_SELECTPASTE | PSF_SELECTPASTELINK); + else if(!pastes_added && (ps_struct->flags & PSF_SELECTPASTE)) + { + ps_struct->flags &= ~PSF_SELECTPASTE; + ps_struct->flags |= PSF_SELECTPASTELINK; + } + else if(!links_added && (ps_struct->flags & PSF_SELECTPASTELINK)) + { + ps_struct->flags &= ~PSF_SELECTPASTELINK; + ps_struct->flags |= PSF_SELECTPASTE; + } + + check_id = 0; + list_id = 0; + if(ps_struct->flags & PSF_SELECTPASTE) + { + check_id = IDC_PS_PASTE; + list_id = IDC_PS_PASTELIST; + } + else if(ps_struct->flags & PSF_SELECTPASTELINK) + { + check_id = IDC_PS_PASTELINK; + list_id = IDC_PS_PASTELINKLIST; + } + + CheckRadioButton(hdlg, IDC_PS_PASTE, IDC_PS_PASTELINK, check_id); } static void update_structure(HWND hdlg, ps_struct_t *ps_struct)