#include "wx/clipbrd.h"
#ifndef WX_PRECOMP
+ #include "wx/dataobj.h"
#include "wx/module.h"
#endif
IMPLEMENT_DYNAMIC_CLASS(wxClipboardEvent,wxEvent)
-DEFINE_EVENT_TYPE(wxEVT_CLIPBOARD_CHANGED)
+wxDEFINE_EVENT( wxEVT_CLIPBOARD_CHANGED, wxClipboardEvent );
+
+// notice that ctors are defined here and not inline to avoid having to include
+// wx/dataobj.h from wx/clipbrd.h
+wxClipboardEvent::wxClipboardEvent(wxEventType evtType)
+ : wxEvent(0, evtType)
+{
+}
+
+wxClipboardEvent::wxClipboardEvent(const wxClipboardEvent& event)
+ : wxEvent(event),
+ m_formats(event.m_formats)
+{
+}
+
+wxEvent* wxClipboardEvent::Clone() const
+{
+ return new wxClipboardEvent(*this);
+}
bool wxClipboardEvent::SupportsFormat( const wxDataFormat &format ) const
-{
- wxVector<wxDataFormat>::size_type n;
- for (n = 0; n < m_formats.size(); n++)
- { if (m_formats[n] == format) return true; }
+{
+#ifdef __WXGTK20__
+ // GTK has an asynchronous API which reports the supported formats one by
+ // one. We may have to add X11 and Motif later.
+ for (wxVector<wxDataFormat>::size_type n = 0; n < m_formats.size(); n++)
+ {
+ if (m_formats[n] == format)
+ return true;
+ }
+
return false;
-}
-
-void wxClipboardEvent::AddFormat( const wxDataFormat &format )
-{
+#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 );
}
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