X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1ccabb813a537c2541f88eb39a83f964d2d42f00..f40f9976fd085fd6d2099de861159bb1062a8f46:/src/html/htmlwin.cpp diff --git a/src/html/htmlwin.cpp b/src/html/htmlwin.cpp index 5166612f44..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; @@ -215,7 +215,7 @@ bool wxHtmlWindow::AppendToPage(const wxString& source) bool wxHtmlWindow::LoadPage(const wxString& location) { wxBusyCursor busyCursor; - + wxFSFile *f; bool rt_val; bool needs_refresh = FALSE; @@ -263,7 +263,15 @@ 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) { @@ -306,7 +314,6 @@ bool wxHtmlWindow::LoadPage(const wxString& location) m_OpenedPage = f->GetLocation(); if (f->GetAnchor() != wxEmptyString) { - wxYield(); ScrollToAnchor(f->GetAnchor()); } @@ -336,7 +343,6 @@ bool wxHtmlWindow::LoadPage(const wxString& location) if (needs_refresh) { - wxYield(); m_tmpCanDrawLocks--; Refresh(); } @@ -347,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) { @@ -494,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(); @@ -525,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(); @@ -596,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); } @@ -647,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()); } @@ -669,6 +677,7 @@ void wxHtmlWindow::OnMouseEvent(wxMouseEvent& event) if (event.ButtonDown()) { + SetFocus(); if ( m_Cell ) { int sx, sy;