X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/02761f6cd478e3c2c97cf6f93442747f7b029833..6362d82b3ed82aa6795e4ad03160820f94c9e4d4:/src/common/clipcmn.cpp diff --git a/src/common/clipcmn.cpp b/src/common/clipcmn.cpp index 4b9225b042..f8134784e0 100644 --- a/src/common/clipcmn.cpp +++ b/src/common/clipcmn.cpp @@ -29,9 +29,45 @@ #include "wx/clipbrd.h" #ifndef WX_PRECOMP + #include "wx/dataobj.h" #include "wx/module.h" #endif +// --------------------------------------------------------- +// wxClipboardEvent +// --------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(wxClipboardEvent,wxEvent) + +DEFINE_EVENT_TYPE(wxEVT_CLIPBOARD_CHANGED) + +bool wxClipboardEvent::SupportsFormat( const wxDataFormat &format ) const +{ +#ifdef __WXGTK20__ + // GTK has an asynchronnous API which reports + // the supported formats one by one. + // We may have to add X11 and Motif later. + wxVector::size_type n; + for (n = 0; n < m_formats.size(); n++) + { if (m_formats[n] == format) return true; } + return false; +#else + // All other ports just query the clipboard directly + // from here + wxClipboard* clipboard = (wxClipboard*) GetEventObject(); + return clipboard->IsSupported( format ); +#endif +} + +void wxClipboardEvent::AddFormat( const wxDataFormat &format ) +{ + m_formats.push_back( format ); +} + +// --------------------------------------------------------- +// wxClipboardBase +// --------------------------------------------------------- + static wxClipboard *gs_clipboard = NULL; /*static*/ wxClipboard *wxClipboardBase::Get() @@ -43,6 +79,19 @@ static wxClipboard *gs_clipboard = NULL; return gs_clipboard; } +bool wxClipboardBase::IsSupportedAsync( wxEvtHandler *sink ) +{ + // We just imitate an asynchronous API on most platforms. + // This method is overridden uner GTK. + wxClipboardEvent *event = new wxClipboardEvent(wxEVT_CLIPBOARD_CHANGED); + event->SetEventObject( this ); + + sink->QueueEvent( event ); + + return true; +} + + // ---------------------------------------------------------------------------- // wxClipboardModule: module responsible for destroying the global clipboard // object