X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0edfdd963bdc9cfeb54d403ed77b5f36e4de8c84..ea412ac4eb9f19e3c28dfa32aa9099a81ac7c74c:/src/msw/clipbrd.cpp diff --git a/src/msw/clipbrd.cpp b/src/msw/clipbrd.cpp index ee67b677fd..fa65cd2a21 100644 --- a/src/msw/clipbrd.cpp +++ b/src/msw/clipbrd.cpp @@ -90,7 +90,9 @@ bool wxOpenClipboard() gs_wxClipboardIsOpen = ::OpenClipboard((HWND)win->GetHWND()) != 0; if ( !gs_wxClipboardIsOpen ) + { wxLogSysError(_("Failed to open the clipboard.")); + } return gs_wxClipboardIsOpen; } @@ -547,6 +549,9 @@ wxClipboard::~wxClipboard() void wxClipboard::Clear() { + if ( IsUsingPrimarySelection() ) + return; + #if wxUSE_OLE_CLIPBOARD if (m_lastDataObject) { @@ -555,10 +560,10 @@ void wxClipboard::Clear() if (S_OK == hr) { hr = OleSetClipboard(NULL); - if ( FAILED(hr) ) - { - wxLogApiError(wxT("OleSetClipboard(NULL)"), hr); - } + if ( FAILED(hr) ) + { + wxLogApiError(wxT("OleSetClipboard(NULL)"), hr); + } } m_lastDataObject = NULL; } @@ -576,14 +581,14 @@ bool wxClipboard::Flush() if (S_OK == hr) { hr = OleFlushClipboard(); - if ( FAILED(hr) ) - { - wxLogApiError(wxT("OleFlushClipboard"), hr); + if ( FAILED(hr) ) + { + wxLogApiError(wxT("OleFlushClipboard"), hr); - return false; - } - return true; - } + return false; + } + return true; + } } return false; #else // !wxUSE_OLE_CLIPBOARD @@ -613,6 +618,9 @@ bool wxClipboard::IsOpened() const bool wxClipboard::SetData( wxDataObject *data ) { + if ( IsUsingPrimarySelection() ) + return false; + #if !wxUSE_OLE_CLIPBOARD (void)wxEmptyClipboard(); #endif // wxUSE_OLE_CLIPBOARD @@ -625,6 +633,9 @@ bool wxClipboard::SetData( wxDataObject *data ) bool wxClipboard::AddData( wxDataObject *data ) { + if ( IsUsingPrimarySelection() ) + return false; + wxCHECK_MSG( data, false, wxT("data is invalid") ); #if wxUSE_OLE_CLIPBOARD @@ -718,11 +729,14 @@ void wxClipboard::Close() bool wxClipboard::IsSupported( const wxDataFormat& format ) { - return wxIsClipboardFormatAvailable(format); + return !IsUsingPrimarySelection() && wxIsClipboardFormatAvailable(format); } bool wxClipboard::GetData( wxDataObject& data ) { + if ( IsUsingPrimarySelection() ) + return false; + #if wxUSE_OLE_CLIPBOARD IDataObject *pDataObject = NULL; HRESULT hr = OleGetClipboard(&pDataObject); @@ -758,7 +772,7 @@ bool wxClipboard::GetData( wxDataObject& data ) // enumerate all explicit formats on the clipboard. // note that this does not include implicit / synthetic (automatically // converted) formats. -#ifdef __WXDEBUG__ +#if wxDEBUG_LEVEL >= 2 // get the format enumerator IEnumFORMATETC *pEnumFormatEtc = NULL; hr = pDataObject->EnumFormatEtc(DATADIR_GET, &pEnumFormatEtc); @@ -791,7 +805,7 @@ bool wxClipboard::GetData( wxDataObject& data ) pEnumFormatEtc->Release(); } -#endif // Debug +#endif // wxDEBUG_LEVEL >= 2 STGMEDIUM medium; // stop at the first valid format found on the clipboard