X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c594325333f3e154ee51edd918ad9cb0582203a7..414eab6de69bbb783e571b7f2bd09a7fd9194164:/wxPython/src/html.i?ds=inline diff --git a/wxPython/src/html.i b/wxPython/src/html.i index 96e418cf9d..e8a04be0ff 100644 --- a/wxPython/src/html.i +++ b/wxPython/src/html.i @@ -127,6 +127,9 @@ public: void PushTagHandler(wxHtmlTagHandler* handler, wxString tags); void PopTagHandler(); + // Returns TRUE if the parser is allowed to open given URL (may be forbidden + // for security reasons) + virtual bool CanOpenURL(const wxString& url) const { return TRUE; } // void AddText(const char* txt) = 0; // void AddTag(const wxHtmlTag& tag); @@ -137,7 +140,7 @@ public: class wxHtmlWinParser : public wxHtmlParser { public: - wxHtmlWinParser(wxWindow *wnd); + wxHtmlWinParser(wxHtmlWindow *wnd = NULL); void SetDC(wxDC *dc); wxDC* GetDC(); @@ -273,25 +276,25 @@ public: } void OnExit() { - wxPyTState* state = wxPyBeginBlockThreads(); + wxPyBeginBlockThreads(); Py_DECREF(m_tagHandlerClass); m_tagHandlerClass = NULL; for (size_t x=0; x < m_objArray.GetCount(); x++) { PyObject* obj = (PyObject*)m_objArray.Item(x); Py_DECREF(obj); } - wxPyEndBlockThreads(state); + wxPyEndBlockThreads(); }; void FillHandlersTable(wxHtmlWinParser *parser) { // Wave our magic wand... (if it works it's a miracle! ;-) // First, make a new instance of the tag handler - wxPyTState* state = wxPyBeginBlockThreads(); + wxPyBeginBlockThreads(); PyObject* arg = Py_BuildValue("()"); PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL); Py_DECREF(arg); - wxPyEndBlockThreads(state); + wxPyEndBlockThreads(); // now figure out where it's C++ object is... wxPyHtmlWinTagHandler* thPtr; @@ -427,6 +430,7 @@ public: DEC_PYCALLBACK__STRING(OnSetTitle); DEC_PYCALLBACK__CELLINTINT(OnCellMouseHover); DEC_PYCALLBACK__CELLINTINTME(OnCellClicked); + DEC_PYCALLBACK_BOOL_STRING(OnOpeningURL); PYPRIVATE; }; @@ -434,17 +438,18 @@ IMPLEMENT_ABSTRACT_CLASS( wxPyHtmlWindow, wxHtmlWindow ); IMP_PYCALLBACK__STRING(wxPyHtmlWindow, wxHtmlWindow, OnSetTitle); IMP_PYCALLBACK__CELLINTINT(wxPyHtmlWindow, wxHtmlWindow, OnCellMouseHover); IMP_PYCALLBACK__CELLINTINTME(wxPyHtmlWindow, wxHtmlWindow, OnCellClicked); +IMP_PYCALLBACK_BOOL_STRING(wxPyHtmlWindow, wxHtmlWindow, OnOpeningURL); void wxPyHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { bool found; - wxPyTState* state = wxPyBeginBlockThreads(); + wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "OnLinkClicked"))) { PyObject* obj = wxPyConstructObject((void*)&link, "wxHtmlLinkInfo", 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); Py_DECREF(obj); } - wxPyEndBlockThreads(state); + wxPyEndBlockThreads(); if (! found) wxHtmlWindow::OnLinkClicked(link); }