X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7ffdaf81b5cf0573ad766c4a4e672d28422f7417..f22e0c3c3f90510f1a92ab148f20b2453e338626:/src/msw/clipbrd.cpp diff --git a/src/msw/clipbrd.cpp b/src/msw/clipbrd.cpp index 043d879ae2..bb12806233 100644 --- a/src/msw/clipbrd.cpp +++ b/src/msw/clipbrd.cpp @@ -319,7 +319,9 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) wxBM->SetWidth(bm.bmWidth); wxBM->SetHeight(bm.bmHeight); wxBM->SetDepth(bm.bmPlanes); +#if WXWIN_COMPATIBILITY_2 wxBM->SetOk(TRUE); +#endif // WXWIN_COMPATIBILITY_2 retval = wxBM; break; } @@ -419,8 +421,6 @@ bool wxGetClipboardFormatName(wxDataFormat dataFormat, IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject) -wxClipboard* wxTheClipboard = (wxClipboard *)NULL; - wxClipboard::wxClipboard() { m_clearOnExit = FALSE; @@ -474,9 +474,20 @@ bool wxClipboard::Open() #endif } +bool wxClipboard::IsOpened() const +{ +#if wxUSE_OLE_CLIPBOARD + return TRUE; +#else + return wxIsClipboardOpened(); +#endif +} + bool wxClipboard::SetData( wxDataObject *data ) { +#if !wxUSE_OLE_CLIPBOARD (void)wxEmptyClipboard(); +#endif // wxUSE_OLE_CLIPBOARD if ( data ) return AddData(data); @@ -569,10 +580,8 @@ bool wxClipboard::IsSupported( wxDataFormat format ) return wxIsClipboardFormatAvailable(format); } -bool wxClipboard::GetData( wxDataObject *data ) +bool wxClipboard::GetData( wxDataObject& data ) { - wxCHECK_MSG( data, FALSE, wxT("invalid data object") ); - #if wxUSE_OLE_CLIPBOARD IDataObject *pDataObject = NULL; HRESULT hr = OleGetClipboard(&pDataObject); @@ -584,7 +593,7 @@ bool wxClipboard::GetData( wxDataObject *data ) } // build the list of supported formats - size_t nFormats = data->GetFormatCount(FALSE /* for SetData() */); + size_t nFormats = data.GetFormatCount(wxDataObject::Set); wxDataFormat format, *formats; if ( nFormats == 1 ) { @@ -597,7 +606,7 @@ bool wxClipboard::GetData( wxDataObject *data ) formats = new wxDataFormat[nFormats]; } - data->GetAllFormats(formats, FALSE); + data.GetAllFormats(formats, wxDataObject::Set); // get the format enumerator bool result = FALSE; @@ -684,7 +693,7 @@ bool wxClipboard::GetData( wxDataObject *data ) if ( SUCCEEDED(hr) ) { // pass the data to the data object - hr = data->GetInterface()->SetData(&formatEtc, &medium, TRUE); + hr = data.GetInterface()->SetData(&formatEtc, &medium, TRUE); if ( FAILED(hr) ) { wxLogDebug(wxT("Failed to set data in wxIDataObject")); @@ -710,91 +719,56 @@ bool wxClipboard::GetData( wxDataObject *data ) #elif wxUSE_DATAOBJ wxCHECK_MSG( wxIsClipboardOpened(), FALSE, wxT("clipboard not open") ); - wxDataFormat format = data->GetFormat(); + wxDataFormat format = data.GetFormat(); switch ( format ) { case wxDF_TEXT: case wxDF_OEMTEXT: { - wxTextDataObject* textDataObject = (wxTextDataObject*) data; - char* s = (char*) wxGetClipboardData(format); - if ( s ) - { - textDataObject->SetText(s); - delete[] s; - return TRUE; - } - else + wxTextDataObject& textDataObject = (wxTextDataObject &)data; + char* s = (char*)wxGetClipboardData(format); + if ( !s ) return FALSE; + + textDataObject.SetText(s); + delete [] s; + + return TRUE; } case wxDF_BITMAP: case wxDF_DIB: { - wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject *)data; + wxBitmapDataObject& bitmapDataObject = (wxBitmapDataObject &)data; wxBitmap* bitmap = (wxBitmap *)wxGetClipboardData(data->GetFormat()); - if (bitmap) - { - bitmapDataObject->SetBitmap(* bitmap); - delete bitmap; - return TRUE; - } - else + if ( !bitmap ) return FALSE; + + bitmapDataObject.SetBitmap(*bitmap); + delete bitmap; + + return TRUE; } #if wxUSE_METAFILE case wxDF_METAFILE: { - wxMetafileDataObject* metaFileDataObject = (wxMetafileDataObject *)data; + wxMetafileDataObject& metaFileDataObject = (wxMetafileDataObject &)data; wxMetafile* metaFile = (wxMetafile *)wxGetClipboardData(wxDF_METAFILE); - if (metaFile) - { - metaFileDataObject->SetMetafile(*metaFile); - delete metaFile; - return TRUE; - } - else + if ( !metaFile ) return FALSE; - } -#endif - default: - { - long len; - void *buf = wxGetClipboardData(format, &len); - if ( buf ) - { - // FIXME this is for testing only!! - ((wxPrivateDataObject *)data)->SetData(buf, len); - free(buf); - return TRUE; - } - } + metaFileDataObject.SetMetafile(*metaFile); + delete metaFile; - return FALSE; + return TRUE; + } +#endif // wxUSE_METAFILE } #else // !wxUSE_DATAOBJ - return FALSE; -#endif // wxUSE_DATAOBJ/!wxUSE_DATAOBJ -} - -//----------------------------------------------------------------------------- -// wxClipboardModule -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule) - -bool wxClipboardModule::OnInit() -{ - wxTheClipboard = new wxClipboard(); + wxFAIL_MSG( wxT("no clipboard implementation") ); +#endif // wxUSE_OLE_CLIPBOARD/wxUSE_DATAOBJ - return TRUE; -} - -void wxClipboardModule::OnExit() -{ - if (wxTheClipboard) delete wxTheClipboard; - wxTheClipboard = (wxClipboard*) NULL; + return FALSE; } #else