X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4f417130931f75a9ac6efae18d55b1a3b59423f0..3251b8346678b487755102e2ddb5f2071ee1f1ca:/src/html/htmlwin.cpp diff --git a/src/html/htmlwin.cpp b/src/html/htmlwin.cpp index 6cf959cf5f..03890efadb 100644 --- a/src/html/htmlwin.cpp +++ b/src/html/htmlwin.cpp @@ -18,7 +18,7 @@ #include "wx/defs.h" #if wxUSE_HTML && wxUSE_STREAMS -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -41,7 +41,7 @@ //----------------------------------------------------------------------------- // item of history list -class WXDLLEXPORT wxHtmlHistoryItem : public wxObject +class WXDLLEXPORT wxHtmlHistoryItem { public: wxHtmlHistoryItem(const wxString& p, const wxString& a) {m_Page = p, m_Anchor = a, m_Pos = 0;} @@ -94,11 +94,11 @@ void wxHtmlWindow::Init() SetBorders(10); } -bool wxHtmlWindow::Create(wxWindow *parent, wxWindowID id, +bool wxHtmlWindow::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) + long style, const wxString& name) { - if (!wxScrolledWindow::Create(parent, id, pos, size, + if (!wxScrolledWindow::Create(parent, id, pos, size, style | wxVSCROLL | wxHSCROLL, name)) return FALSE; @@ -214,13 +214,12 @@ bool wxHtmlWindow::AppendToPage(const wxString& source) bool wxHtmlWindow::LoadPage(const wxString& location) { + wxBusyCursor busyCursor; + wxFSFile *f; bool rt_val; bool needs_refresh = FALSE; - SetCursor(*wxHOURGLASS_CURSOR); - wxYield(); Refresh(FALSE); - m_tmpCanDrawLocks++; if (m_HistoryOn && (m_HistoryPos != -1)) { @@ -264,14 +263,20 @@ bool wxHtmlWindow::LoadPage(const wxString& location) Refresh(FALSE); } - f = m_FS->OpenFile(location); + f = m_Parser->OpenURL(wxHTML_URL_PAGE, location); + + // try to interpret 'location' as filename instead of URL: + if (f == NULL) + { + wxFileName fn(location); + wxString location2 = wxFileSystem::FileNameToURL(fn); + f = m_Parser->OpenURL(wxHTML_URL_PAGE, location2); + } if (f == NULL) { wxLogError(_("Unable to open requested HTML document: %s"), location.c_str()); m_tmpCanDrawLocks--; - - SetCursor(*wxSTANDARD_CURSOR); return FALSE; } @@ -309,7 +314,6 @@ bool wxHtmlWindow::LoadPage(const wxString& location) m_OpenedPage = f->GetLocation(); if (f->GetAnchor() != wxEmptyString) { - wxYield(); ScrollToAnchor(f->GetAnchor()); } @@ -336,11 +340,9 @@ bool wxHtmlWindow::LoadPage(const wxString& location) if (m_OpenedPageTitle == wxEmptyString) OnSetTitle(wxFileNameFromPath(m_OpenedPage)); - SetCursor(*wxSTANDARD_CURSOR); if (needs_refresh) { - wxYield(); m_tmpCanDrawLocks--; Refresh(); } @@ -351,6 +353,12 @@ bool wxHtmlWindow::LoadPage(const wxString& location) } +bool wxHtmlWindow::LoadFile(const wxFileName& filename) +{ + wxString url = wxFileSystem::FileNameToURL(filename); + return LoadPage(url); +} + bool wxHtmlWindow::ScrollToAnchor(const wxString& anchor) { @@ -498,7 +506,6 @@ bool wxHtmlWindow::HistoryBack() if (a == wxEmptyString) LoadPage(l); else LoadPage(l + wxT("#") + a); m_HistoryOn = TRUE; - wxYield(); m_tmpCanDrawLocks--; Scroll(0, (*m_History)[m_HistoryPos].GetPos()); Refresh(); @@ -529,7 +536,6 @@ bool wxHtmlWindow::HistoryForward() if (a == wxEmptyString) LoadPage(l); else LoadPage(l + wxT("#") + a); m_HistoryOn = TRUE; - wxYield(); m_tmpCanDrawLocks--; Scroll(0, (*m_History)[m_HistoryPos].GetPos()); Refresh(); @@ -600,14 +606,12 @@ wxHtmlProcessorList *wxHtmlWindow::m_GlobalProcessors = NULL; void wxHtmlWindow::CleanUpStatics() { - delete m_DefaultFilter; - m_DefaultFilter = NULL; + wxDELETE(m_DefaultFilter); m_Filters.DeleteContents(TRUE); m_Filters.Clear(); - delete m_GlobalProcessors; - m_GlobalProcessors = NULL; - delete s_cur_hand; - delete s_cur_arrow; + wxDELETE(m_GlobalProcessors); + wxDELETE(s_cur_hand); + wxDELETE(s_cur_arrow); } @@ -651,8 +655,8 @@ void wxHtmlWindow::OnDraw(wxDC& dc) dc.SetBackgroundMode(wxTRANSPARENT); GetViewStart(&x, &y); - m_Cell->Draw(dc, 0, 0, - y * wxHTML_SCROLL_STEP + rect.GetTop(), + m_Cell->Draw(dc, 0, 0, + y * wxHTML_SCROLL_STEP + rect.GetTop(), y * wxHTML_SCROLL_STEP + rect.GetBottom()); } @@ -673,6 +677,7 @@ void wxHtmlWindow::OnMouseEvent(wxMouseEvent& event) if (event.ButtonDown()) { + SetFocus(); if ( m_Cell ) { int sx, sy;