Ticket #16636: clipboard-timer.cxx

File clipboard-timer.cxx, 1.5 KB (added by martin.steghoefer, 6 years ago)

Second example; can reproduce the second hole (timer)

Line 
1#include <wx/wxprec.h>
2#ifndef WX_PRECOMP
3#include <wx/wx.h>
4#endif
5
6
7#include <wx/app.h>
8#include <wx/clipbrd.h>
9#include <wx/defs.h>
10
11
12// AssertHandler --------------------------------------------
13
14
15void assertHandler(
16    const wxString &file, int line, const wxString &func,
17    const wxString &cond, const wxString &msg)
18{
19    std::cout << "assertion failed: "
20        << file << " / "
21        << line << " / "
22        << func << " / "
23        << cond << " / "
24        << msg << std::endl;
25}
26
27
28// Frame ----------------------------------------------------
29
30
31class CustomFrame : public wxFrame
32{
33public:
34    CustomFrame()
35    : wxFrame(NULL, 1, wxT("CustomFrame"))
36    {
37        wxTimer *timer = new wxTimer(this, 1);
38        timer->Start(10);
39
40        wxSleep(2);
41
42        // simple clipboard operation (calls wxGUIEventLoop::YieldFor)
43        wxTheClipboard->IsSupported(wxDF_TEXT);
44    }
45
46    void OnTimerTimeout(wxTimerEvent& event)
47    {
48        // simple clipboard operation (reentry)
49        wxTheClipboard->IsSupported(wxDF_TEXT);
50    }
51
52    DECLARE_EVENT_TABLE()
53};
54
55
56BEGIN_EVENT_TABLE(CustomFrame, wxFrame)
57  EVT_TIMER(1, CustomFrame::OnTimerTimeout)
58END_EVENT_TABLE()
59
60
61// App ------------------------------------------------------
62
63
64class MyApp : public wxApp
65{
66public:
67    virtual bool OnInit()
68    {
69        wxSetAssertHandler(assertHandler);
70        CustomFrame *frame = new CustomFrame();
71        frame->Show();
72
73        return true;
74    }
75};
76
77
78IMPLEMENT_APP(MyApp);
79
80