/////////////////////////////////////////////////////////////////////////////
-// Name: common/clipcmn.cpp
+// Name: src/common/clipcmn.cpp
// Purpose: common (to all ports) wxClipboard functions
// Author: Robert Roebling
// Modified by:
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "clipboardbase.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#pragma hdrstop
#endif
+#if wxUSE_CLIPBOARD
+
#include "wx/clipbrd.h"
-#include "wx/module.h"
-#if wxUSE_CLIPBOARD
+#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<wxDataFormat>::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;
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