create wxTheClipboard on first use, not startup -- this fixes crash in console-only apps that were linked against wxGTK's 'core' shared library
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27914 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
class WXDLLEXPORT wxDataFormat;
|
class WXDLLEXPORT wxDataFormat;
|
||||||
class WXDLLEXPORT wxDataObject;
|
class WXDLLEXPORT wxDataObject;
|
||||||
|
class WXDLLEXPORT wxClipboard;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxClipboard represents the system clipboard. Normally, you should use
|
// wxClipboard represents the system clipboard. Normally, you should use
|
||||||
@@ -38,7 +39,7 @@ class WXDLLEXPORT wxDataObject;
|
|||||||
class WXDLLEXPORT wxClipboardBase : public wxObject
|
class WXDLLEXPORT wxClipboardBase : public wxObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxClipboardBase();
|
wxClipboardBase() {}
|
||||||
|
|
||||||
// open the clipboard before Add/SetData() and GetData()
|
// open the clipboard before Add/SetData() and GetData()
|
||||||
virtual bool Open() = 0;
|
virtual bool Open() = 0;
|
||||||
@@ -76,8 +77,17 @@ public:
|
|||||||
// X11 has two clipboards which get selected by this call. Empty on MSW.
|
// X11 has two clipboards which get selected by this call. Empty on MSW.
|
||||||
virtual void UsePrimarySelection( bool WXUNUSED(primary) = FALSE ) { }
|
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 platform-specific class declaration
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -100,13 +110,6 @@ public:
|
|||||||
#include "wx/os2/clipbrd.h"
|
#include "wx/os2/clipbrd.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// globals
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// The global clipboard object
|
|
||||||
WXDLLEXPORT_DATA(extern wxClipboard *) wxTheClipboard;
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// helpful class for opening the clipboard and automatically closing it
|
// helpful class for opening the clipboard and automatically closing it
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -33,49 +33,32 @@
|
|||||||
|
|
||||||
#if wxUSE_CLIPBOARD
|
#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
|
// object
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
class wxClipboardModule : public wxModule
|
class wxClipboardModule : public wxModule
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool OnInit();
|
bool OnInit() { return true; }
|
||||||
void OnExit();
|
void OnExit() { wxDELETE(gs_clipboard); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_DYNAMIC_CLASS(wxClipboardModule)
|
DECLARE_DYNAMIC_CLASS(wxClipboardModule)
|
||||||
};
|
};
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// global data defined here
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule, wxModule)
|
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
|
#endif // wxUSE_CLIPBOARD
|
||||||
|
Reference in New Issue
Block a user