From 039ae272d30a3f0ef9c378776ab4d59acc3dcc4f Mon Sep 17 00:00:00 2001 From: Aric Stewart Date: Mon, 12 Feb 2001 19:16:05 +0000 Subject: [PATCH] If an application directly calls SetClipboardData with CF_TEXT and then later called GetClipboardData with CF_TEXT we gave them a NULL because we where not handling this case. --- windows/clipboard.c | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/windows/clipboard.c b/windows/clipboard.c index 4e107471559..a8d4b87bd46 100644 --- a/windows/clipboard.c +++ b/windows/clipboard.c @@ -495,11 +495,17 @@ static LPWINE_CLIPFORMAT CLIPBOARD_RenderText( UINT wFormat ) LPWINE_CLIPFORMAT lpTarget = NULL; BOOL foundData = FALSE; - /* Asked for CF_TEXT but not available - always attempt to convert - from CF_UNICODETEXT or CF_OEMTEXT */ - if( wFormat == CF_TEXT && !ClipFormats[CF_TEXT-1].wDataPresent ) + /* Asked for CF_TEXT */ + if( wFormat == CF_TEXT) { - if(ClipFormats[CF_UNICODETEXT-1].wDataPresent) + if(ClipFormats[CF_TEXT-1].wDataPresent) + { + lpSource = &ClipFormats[CF_TEXT-1]; + lpTarget = &ClipFormats[CF_TEXT-1]; + foundData = TRUE; + TRACE("\t TEXT -> TEXT\n"); + } + else if(ClipFormats[CF_UNICODETEXT-1].wDataPresent) { /* Convert UNICODETEXT -> TEXT */ lpSource = &ClipFormats[CF_UNICODETEXT-1]; @@ -516,11 +522,17 @@ static LPWINE_CLIPFORMAT CLIPBOARD_RenderText( UINT wFormat ) TRACE("\tOEMTEXT -> TEXT\n"); } } - /* Asked for CF_OEMTEXT but not available - always attempt to convert - from CF_UNICODETEXT or CF_TEXT */ - else if( wFormat == CF_OEMTEXT && !ClipFormats[CF_OEMTEXT-1].wDataPresent ) + /* Asked for CF_OEMTEXT */ + else if( wFormat == CF_OEMTEXT) { - if(ClipFormats[CF_UNICODETEXT-1].wDataPresent) + if(ClipFormats[CF_OEMTEXT-1].wDataPresent) + { + lpSource = &ClipFormats[CF_OEMTEXT-1]; + lpTarget = &ClipFormats[CF_OEMTEXT-1]; + foundData = TRUE; + TRACE("\tOEMTEXT -> OEMTEXT\n"); + } + else if(ClipFormats[CF_UNICODETEXT-1].wDataPresent) { /* Convert UNICODETEXT -> OEMTEXT */ lpSource = &ClipFormats[CF_UNICODETEXT-1]; @@ -537,11 +549,17 @@ static LPWINE_CLIPFORMAT CLIPBOARD_RenderText( UINT wFormat ) TRACE("\tTEXT -> OEMTEXT\n"); } } - /* Asked for CF_UNICODETEXT but not available - always attempt to convert - from CF_TEXT or CF_OEMTEXT */ - else if( wFormat == CF_UNICODETEXT && !ClipFormats[CF_UNICODETEXT-1].wDataPresent ) + /* Asked for CF_UNICODETEXT */ + else if( wFormat == CF_UNICODETEXT ) { - if(ClipFormats[CF_TEXT-1].wDataPresent) + if(ClipFormats[CF_UNICODETEXT-1].wDataPresent) + { + lpSource = &ClipFormats[CF_UNICODETEXT-1]; + lpTarget = &ClipFormats[CF_UNICODETEXT-1]; + foundData = TRUE; + TRACE("\tUNICODETEXT -> UNICODETEXT\n"); + } + else if(ClipFormats[CF_TEXT-1].wDataPresent) { /* Convert TEXT -> UNICODETEXT */ lpSource = &ClipFormats[CF_TEXT-1];