class WXDLLEXPORT wxDataFormat;
class WXDLLEXPORT wxDataObject;
+class WXDLLEXPORT wxClipboard;
// ----------------------------------------------------------------------------
// wxClipboard represents the system clipboard. Normally, you should use
class WXDLLEXPORT wxClipboardBase : public wxObject
{
public:
- wxClipboardBase();
+ wxClipboardBase() {}
// open the clipboard before Add/SetData() and GetData()
virtual bool Open() = 0;
// X11 has two clipboards which get selected by this call. Empty on MSW.
virtual void UsePrimarySelection( bool WXUNUSED(primary) = FALSE ) { }
+ // Returns global instance (wxTheClipboard) of the object:
+ static wxClipboard *Get();
};
+// ----------------------------------------------------------------------------
+// globals
+// ----------------------------------------------------------------------------
+
+// The global clipboard object - backward compatible access macro:
+#define wxTheClipboard (wxClipboard::Get())
+
// ----------------------------------------------------------------------------
// include platform-specific class declaration
// ----------------------------------------------------------------------------
#include "wx/os2/clipbrd.h"
#endif
-// ----------------------------------------------------------------------------
-// globals
-// ----------------------------------------------------------------------------
-
-// The global clipboard object
-WXDLLEXPORT_DATA(extern wxClipboard *) wxTheClipboard;
-
// ----------------------------------------------------------------------------
// helpful class for opening the clipboard and automatically closing it
// ----------------------------------------------------------------------------
#if wxUSE_CLIPBOARD
+static wxClipboard *gs_clipboard = NULL;
+
+/*static*/ wxClipboard *wxClipboardBase::Get()
+{
+ if ( !gs_clipboard )
+ {
+ gs_clipboard = new wxClipboard;
+ }
+ return gs_clipboard;
+}
+
// ----------------------------------------------------------------------------
-// wxClipboardModule: module responsible for initializing the global clipboard
+// wxClipboardModule: module responsible for destroying the global clipboard
// object
// ----------------------------------------------------------------------------
class wxClipboardModule : public wxModule
{
public:
- bool OnInit();
- void OnExit();
+ bool OnInit() { return true; }
+ void OnExit() { wxDELETE(gs_clipboard); }
private:
DECLARE_DYNAMIC_CLASS(wxClipboardModule)
};
-// ----------------------------------------------------------------------------
-// global data defined here
-// ----------------------------------------------------------------------------
-
IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule, wxModule)
-wxClipboard* wxTheClipboard = (wxClipboard *)NULL;
-
-// ----------------------------------------------------------------------------
-// implementation
-// ----------------------------------------------------------------------------
-
-wxClipboardBase::wxClipboardBase()
-{
-}
-
-bool wxClipboardModule::OnInit()
-{
- wxTheClipboard = new wxClipboard;
-
- return TRUE;
-}
-
-void wxClipboardModule::OnExit()
-{
- delete wxTheClipboard;
-
- wxTheClipboard = (wxClipboard *)NULL;
-}
-
#endif // wxUSE_CLIPBOARD