X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d9317fd47263a9521466156d7bf0f7988000bf15..dbc38199c0d74ba6cddeced769765a2e445e380d:/src/msw/clipbrd.cpp?ds=sidebyside diff --git a/src/msw/clipbrd.cpp b/src/msw/clipbrd.cpp index 1166f73e33..013448c3ac 100644 --- a/src/msw/clipbrd.cpp +++ b/src/msw/clipbrd.cpp @@ -55,15 +55,20 @@ #include <windows.h> #include "wx/msw/private.h" + +#ifndef __WXMICROWIN__ #include "wx/msw/dib.h" +#endif // wxDataObject is tied to OLE/drag and drop implementation, therefore so are // the functions using wxDataObject in wxClipboard -#define wxUSE_DATAOBJ wxUSE_DRAG_AND_DROP +//#define wxUSE_DATAOBJ wxUSE_DRAG_AND_DROP #if wxUSE_DATAOBJ #include "wx/dataobj.h" +#endif +#if wxUSE_OLE // use OLE clipboard #define wxUSE_OLE_CLIPBOARD 1 #else // !wxUSE_DATAOBJ @@ -159,7 +164,7 @@ bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat) case CF_BITMAP: return ::IsClipboardFormatAvailable(CF_DIB) != 0; -#if wxUSE_ENH_METAFILE +#if wxUSE_ENH_METAFILE && !defined(__WIN16__) case CF_METAFILEPICT: return ::IsClipboardFormatAvailable(CF_ENHMETAFILE) != 0; #endif // wxUSE_ENH_METAFILE @@ -219,7 +224,7 @@ bool wxSetClipboardData(wxDataFormat dataFormat, wxBitmap *bitmap = (wxBitmap *)data; HBITMAP hBitmap = (HBITMAP)bitmap->GetHBITMAP(); // NULL palette means to use the system one - HANDLE hDIB = wxBitmapToDIB(hBitmap, (HPALETTE)NULL); + HANDLE hDIB = wxBitmapToDIB(hBitmap, (HPALETTE)NULL); handle = SetClipboardData(CF_DIB, hDIB); #endif // wxUSE_IMAGE_LOADING_IN_MSW break; @@ -247,7 +252,7 @@ bool wxSetClipboardData(wxDataFormat dataFormat, } #endif // wxUSE_METAFILE -#if wxUSE_ENH_METAFILE +#if wxUSE_ENH_METAFILE && !defined(__WIN16__) case wxDF_ENHMETAFILE: { wxEnhMetaFile *emf = (wxEnhMetaFile *)data; @@ -433,7 +438,7 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) wxDataFormat wxEnumClipboardFormats(wxDataFormat dataFormat) { - return ::EnumClipboardFormats(dataFormat); + return (wxDataFormat::NativeFormat)::EnumClipboardFormats(dataFormat); } int wxRegisterClipboardFormat(wxChar *formatName) @@ -472,7 +477,7 @@ void wxClipboard::Clear() #if wxUSE_OLE_CLIPBOARD if ( FAILED(OleSetClipboard(NULL)) ) { - wxLogLastError("OleSetClipboard(NULL)"); + wxLogLastError(wxT("OleSetClipboard(NULL)")); } #endif } @@ -482,7 +487,7 @@ bool wxClipboard::Flush() #if wxUSE_OLE_CLIPBOARD if ( FAILED(OleFlushClipboard()) ) { - wxLogLastError("OleFlushClipboard"); + wxLogLastError(wxT("OleFlushClipboard")); return FALSE; } @@ -560,7 +565,7 @@ bool wxClipboard::AddData( wxDataObject *data ) #elif wxUSE_DATAOBJ wxCHECK_MSG( wxIsClipboardOpened(), FALSE, wxT("clipboard not open") ); - wxDataFormat format = data->GetFormat(); + wxDataFormat format = data->GetPreferredFormat(); switch ( format ) { @@ -577,23 +582,35 @@ bool wxClipboard::AddData( wxDataObject *data ) { wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data; wxBitmap bitmap(bitmapDataObject->GetBitmap()); - return wxSetClipboardData(data->GetFormat(), &bitmap); + return wxSetClipboardData(data->GetPreferredFormat(), &bitmap); } #if wxUSE_METAFILE case wxDF_METAFILE: { - wxMetafileDataObject* metaFileDataObject = +#if 1 + // TODO + wxLogError("Not implemented because wxMetafileDataObject does not contain width and height values."); + return FALSE; +#else + wxMetafileDataObject* metaFileDataObject = (wxMetafileDataObject*) data; wxMetafile metaFile = metaFileDataObject->GetMetafile(); return wxSetClipboardData(wxDF_METAFILE, &metaFile, metaFileDataObject->GetWidth(), metaFileDataObject->GetHeight()); +#endif } #endif // wxUSE_METAFILE default: - return wxSetClipboardData(data); + { +// This didn't compile, of course +// return wxSetClipboardData(data); + // TODO + wxLogError("Not implemented."); + return FALSE; + } } #else // !wxUSE_DATAOBJ return FALSE; @@ -627,7 +644,8 @@ bool wxClipboard::GetData( wxDataObject& data ) // build the list of supported formats size_t nFormats = data.GetFormatCount(wxDataObject::Set); - wxDataFormat format, *formats; + wxDataFormat format; + wxDataFormat *formats; if ( nFormats == 1 ) { // the most common case @@ -770,7 +788,7 @@ bool wxClipboard::GetData( wxDataObject& data ) #elif wxUSE_DATAOBJ wxCHECK_MSG( wxIsClipboardOpened(), FALSE, wxT("clipboard not open") ); - wxDataFormat format = data.GetFormat(); + wxDataFormat format = data.GetPreferredFormat(); switch ( format ) { case wxDF_TEXT: @@ -791,7 +809,7 @@ bool wxClipboard::GetData( wxDataObject& data ) case wxDF_DIB: { wxBitmapDataObject& bitmapDataObject = (wxBitmapDataObject &)data; - wxBitmap* bitmap = (wxBitmap *)wxGetClipboardData(data->GetFormat()); + wxBitmap* bitmap = (wxBitmap *)wxGetClipboardData(data.GetPreferredFormat()); if ( !bitmap ) return FALSE; @@ -815,14 +833,12 @@ bool wxClipboard::GetData( wxDataObject& data ) } #endif // wxUSE_METAFILE } + return FALSE; #else // !wxUSE_DATAOBJ wxFAIL_MSG( wxT("no clipboard implementation") ); -#endif // wxUSE_OLE_CLIPBOARD/wxUSE_DATAOBJ - return FALSE; +#endif // wxUSE_OLE_CLIPBOARD/wxUSE_DATAOBJ } -#else - #error "Please turn wxUSE_CLIPBOARD on to compile this file." #endif // wxUSE_CLIPBOARD