X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/04db5c3f8f9dbf65ca81198ca1a6bbcbaa7a4a03..90f501b16e1b6dcc9e2aae6a413287a22842da61:/src/html/winpars.cpp diff --git a/src/html/winpars.cpp b/src/html/winpars.cpp index 479401d392..9d8209ddfb 100644 --- a/src/html/winpars.cpp +++ b/src/html/winpars.cpp @@ -180,14 +180,32 @@ wxObject* wxHtmlWinParser::GetProduct() return top; } -bool wxHtmlWinParser::CanOpenURL(const wxString& url) const +wxFSFile *wxHtmlWinParser::OpenURL(wxHtmlURLType type, + const wxString& url) const { // FIXME - normalize the URL to full path before passing to // OnOpeningURL!! if ( m_Window ) - return m_Window->OnOpeningURL(url); - else - return TRUE; + { + wxString myurl(url); + wxHtmlOpeningStatus status; + for (;;) + { + wxString redirect; + status = m_Window->OnOpeningURL(type, myurl, &redirect); + if ( status != wxHTML_REDIRECT ) + break; + + myurl = redirect; + } + + if ( status == wxHTML_BLOCK ) + return NULL; + + return GetFS()->OpenFile(myurl); + } + + return wxHtmlParser::OpenURL(type, url); } void wxHtmlWinParser::AddText(const wxChar* txt) @@ -425,27 +443,29 @@ void wxHtmlWinParser::SetInputEncoding(wxFontEncoding enc) IMPLEMENT_ABSTRACT_CLASS(wxHtmlWinTagHandler, wxHtmlTagHandler) - - //----------------------------------------------------------------------------- // wxHtmlTagsModule //----------------------------------------------------------------------------- +// NB: This is *NOT* winpars.cpp's initialization and shutdown code!! +// This module is an ancestor for tag handlers modules defined +// in m_*.cpp files with TAGS_MODULE_BEGIN...TAGS_MODULE_END construct. +// +// Do not add any winpars.cpp shutdown or initialization code to it, +// create a new module instead! IMPLEMENT_DYNAMIC_CLASS(wxHtmlTagsModule, wxModule) - bool wxHtmlTagsModule::OnInit() { wxHtmlWinParser::AddModule(this); return TRUE; } - - void wxHtmlTagsModule::OnExit() { wxHtmlWinParser::RemoveModule(this); } + #endif