/////////////////////////////////////////////////////////////////////////////
-// Name: wx/gtk/clipboard.h
+// Name: wx/gtk/clipbrd.h
// Purpose: wxClipboard for wxGTK
// Author: Robert Roebling, Vadim Zeitlin
-// Id: $Id$
// Copyright: (c) 1998 Robert Roebling
// (c) 2007 Vadim Zeitlin
// Licence: wxWindows licence
// wxClipboard
// ----------------------------------------------------------------------------
+#include "wx/weakref.h"
+
class WXDLLIMPEXP_CORE wxClipboard : public wxClipboardBase
{
public:
// ask if data in correct format is available
virtual bool IsSupported( const wxDataFormat& format );
+ // ask if data in correct format is available
+ virtual bool IsSupportedAsync( wxEvtHandler *sink );
+
// fill data with data on the clipboard (if available)
virtual bool GetData( wxDataObject& data );
// clears wxTheClipboard and the system's clipboard if possible
virtual void Clear();
- // If primary == TRUE, use primary selection in all further ops,
- // primary == FALSE resets it.
- virtual void UsePrimarySelection(bool primary = TRUE)
- { m_usePrimary = primary; }
-
+
// implementation from now on
// --------------------------
// get our clipboard item (depending on m_usePrimary value)
GdkAtom GTKGetClipboardAtom() const;
- // get the data object currently being used
- wxDataObject *GTKGetDataObject() { return Data(); }
+ // get the data object currently being requested
+ wxDataObject *GTKGetDataObject( GdkAtom atom );
// clear the data for the given clipboard kind
void GTKClearData(Kind kind);
bool GTKOnTargetReceived(const wxDataFormat& format);
private:
+ // the data object for the specific selection
+ wxDataObject *& Data(Kind kind)
+ {
+ return kind == Primary ? m_dataPrimary : m_dataClipboard;
+ }
+
// the data object we're currently using
wxDataObject *& Data()
{
- return m_usePrimary ? m_dataPrimary : m_dataClipboard;
+ return Data(m_usePrimary ? Primary : Clipboard);
}
+
// set or unset selection ownership
bool SetSelectionOwner(bool set = true);
GtkWidget *m_clipboardWidget; // for getting and offering data
GtkWidget *m_targetsWidget; // for getting list of supported formats
+ // ID of the connection to "selection_get" signal, initially 0.
+ unsigned long m_idSelectionGetHandler;
+
bool m_open;
- bool m_usePrimary;
bool m_formatSupported;
+public:
+ // async stuff
+ wxEvtHandlerRef m_sink;
+private:
+ GtkWidget *m_targetsWidgetAsync; // for getting list of supported formats
DECLARE_DYNAMIC_CLASS(wxClipboard)
};