Huw Davies : oledlg: Initialize the pastelink list.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Oct 20 04:45:55 CDT 2006


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Wed Oct 18 21:38:10 2006 +0100

oledlg: Initialize the pastelink list.

---

 dlls/oledlg/pastespl.c |   36 ++++++++++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/dlls/oledlg/pastespl.c b/dlls/oledlg/pastespl.c
index 8073c34..cbfd764 100644
--- a/dlls/oledlg/pastespl.c
+++ b/dlls/oledlg/pastespl.c
@@ -181,9 +181,45 @@ static DWORD init_pastelist(HWND hdlg, O
     return items_added;
 }
 
+static DWORD init_linklist(HWND hdlg, OLEUIPASTESPECIALW *ps)
+{
+    HRESULT hr;
+    DWORD supported_mask = 0;
+    DWORD items_added = 0;
+    int link, req_fmt;
+    FORMATETC fmt = {0, NULL, DVASPECT_CONTENT, -1, -1};
+
+    for(link = 0; link < ps->cLinkTypes && link < PS_MAXLINKTYPES; link++)
+    {
+        fmt.cfFormat = ps->arrLinkTypes[link];
+        hr = IDataObject_QueryGetData(ps->lpSrcDataObj, &fmt);
+        if(hr == S_OK)
+            supported_mask |= 1 << link;
+    }
+    TRACE("supported_mask %02x\n", supported_mask);
+    for(req_fmt = 0; req_fmt < ps->cPasteEntries; req_fmt++)
+    {
+        DWORD linktypes;
+        if(ps->arrPasteEntries[req_fmt].dwFlags & OLEUIPASTE_LINKANYTYPE)
+            linktypes = 0xff;
+        else
+            linktypes = ps->arrPasteEntries[req_fmt].dwFlags & 0xff;
+
+        if(linktypes & supported_mask)
+        {
+            add_entry_to_lb(hdlg, IDC_PS_PASTELINKLIST, ps->arrPasteEntries + req_fmt);
+            items_added++;
+        }
+    }
+
+    EnableWindow(GetDlgItem(hdlg, IDC_PS_PASTELINK), items_added ? TRUE : FALSE);
+    return items_added;
+}
+
 static void init_lists(HWND hdlg, ps_struct_t *ps_struct)
 {
     init_pastelist(hdlg, ps_struct->ps);
+    init_linklist(hdlg, ps_struct->ps);
 }
 
 static void update_structure(HWND hdlg, ps_struct_t *ps_struct)




More information about the wine-cvs mailing list