X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/17ede0b11d44bf02e09dce4f3e0e32d594458b0f..6a7e5ea2f5c412f92316c260b8531cff6d5cb231:/samples/html/test/test.cpp diff --git a/samples/html/test/test.cpp b/samples/html/test/test.cpp index 0336006f31..176bc81b42 100644 --- a/samples/html/test/test.cpp +++ b/samples/html/test/test.cpp @@ -28,6 +28,8 @@ #include "wx/fs_inet.h" #include "wx/filedlg.h" #include "wx/utils.h" +#include "wx/clipbrd.h" +#include "wx/dataobj.h" #include "../../sample.xpm" @@ -53,6 +55,11 @@ public: wxString *WXUNUSED(redirect)) const; private: + void OnClipboardEvent(wxClipboardTextEvent& event); + +#if wxUSE_CLIPBOARD + DECLARE_EVENT_TABLE() +#endif // wxUSE_CLIPBOARD DECLARE_NO_COPY_CLASS(MyHtmlWindow) }; @@ -147,6 +154,9 @@ IMPLEMENT_APP(MyApp) // `Main program' equivalent: the program execution "starts" here bool MyApp::OnInit() { + if ( !wxApp::OnInit() ) + return false; + #if wxUSE_SYSTEM_OPTIONS wxSystemOptions::SetOption(wxT("no-maskblt"), 1); #endif @@ -315,13 +325,13 @@ void MyFrame::OnHtmlLinkClicked(wxHtmlLinkEvent &event) void MyFrame::OnHtmlCellHover(wxHtmlCellEvent &event) { - wxLogMessage(wxT("Mouse moved over cell %d at %d;%d"), + wxLogMessage(wxT("Mouse moved over cell %p at %d;%d"), event.GetCell(), event.GetPoint().x, event.GetPoint().y); } void MyFrame::OnHtmlCellClicked(wxHtmlCellEvent &event) { - wxLogMessage(wxT("Click over cell %d at %d;%d"), + wxLogMessage(wxT("Click over cell %p at %d;%d"), event.GetCell(), event.GetPoint().x, event.GetPoint().y); // if we don't skip the event, OnHtmlLinkClicked won't be called! @@ -335,3 +345,34 @@ wxHtmlOpeningStatus MyHtmlWindow::OnOpeningURL(wxHtmlURLType WXUNUSED(type), GetRelatedFrame()->SetStatusText(url + _T(" lately opened"),1); return wxHTML_OPEN; } + +#if wxUSE_CLIPBOARD +BEGIN_EVENT_TABLE(MyHtmlWindow, wxHtmlWindow) + EVT_TEXT_COPY(wxID_ANY, MyHtmlWindow::OnClipboardEvent) +END_EVENT_TABLE() + +void MyHtmlWindow::OnClipboardEvent(wxClipboardTextEvent& WXUNUSED(event)) +{ + // explicitly call wxHtmlWindow::CopySelection() method + // and show the first 100 characters of the text copied in the status bar + if ( CopySelection() ) + { + wxTextDataObject data; + if ( wxTheClipboard && wxTheClipboard->Open() && wxTheClipboard->GetData(data) ) + { + const wxString text = data.GetText(); + const size_t maxTextLength = 100; + + wxLogStatus(wxString::Format(_T("Clipboard: '%s%s'"), + wxString(text, maxTextLength).c_str(), + (text.length() > maxTextLength) ? _T("...") + : _T(""))); + wxTheClipboard->Close(); + + return; + } + } + + wxLogStatus(_T("Clipboard: nothing")); +} +#endif // wxUSE_CLIPBOARD