X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/518ba66331d4e63376448802ce23fb7f7da82250..7ea1c917764fb2588fe1aadc75c49ba300f8cb2f:/src/html/htmlwin.cpp diff --git a/src/html/htmlwin.cpp b/src/html/htmlwin.cpp index 00be22276a..fc42f4cb5a 100644 --- a/src/html/htmlwin.cpp +++ b/src/html/htmlwin.cpp @@ -7,12 +7,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "htmlwin.h" -#pragma implementation "htmlproc.h" -#endif - #include "wx/wxprec.h" #include "wx/defs.h" @@ -141,10 +135,10 @@ private: //----------------------------------------------------------------------------- WX_DECLARE_OBJARRAY(wxHtmlHistoryItem, wxHtmlHistoryArray); -WX_DEFINE_OBJARRAY(wxHtmlHistoryArray); +WX_DEFINE_OBJARRAY(wxHtmlHistoryArray) WX_DECLARE_LIST(wxHtmlProcessor, wxHtmlProcessorList); -WX_DEFINE_LIST(wxHtmlProcessorList); +WX_DEFINE_LIST(wxHtmlProcessorList) //----------------------------------------------------------------------------- // wxHtmlWindow @@ -181,6 +175,7 @@ void wxHtmlWindow::Init() #endif // wxUSE_CLIPBOARD m_backBuffer = NULL; m_eraseBgInOnPaint = false; + m_tmpSelFromCell = NULL; } bool wxHtmlWindow::Create(wxWindow *parent, wxWindowID id, @@ -240,37 +235,39 @@ void wxHtmlWindow::SetRelatedStatusBar(int bar) -void wxHtmlWindow::SetFonts(wxString normal_face, wxString fixed_face, const int *sizes) +void wxHtmlWindow::SetFonts(const wxString& normal_face, const wxString& fixed_face, const int *sizes) { - wxString op = m_OpenedPage; - m_Parser->SetFonts(normal_face, fixed_face, sizes); - // fonts changed => contents invalid, so reload the page: - SetPage(wxT("")); - if (!op.empty()) - LoadPage(op); + + // re-layout the page after changing fonts: + DoSetPage(*(m_Parser->GetSource())); } void wxHtmlWindow::SetStandardFonts(int size, const wxString& normal_face, const wxString& fixed_face) { - wxString op = m_OpenedPage; - m_Parser->SetStandardFonts(size, normal_face, fixed_face); - // fonts changed => contents invalid, so reload the page: - SetPage(wxT("")); - if (!op.empty()) - LoadPage(op); -} + // re-layout the page after changing fonts: + DoSetPage(*(m_Parser->GetSource())); +} bool wxHtmlWindow::SetPage(const wxString& source) +{ + m_OpenedPage = m_OpenedAnchor = m_OpenedPageTitle = wxEmptyString; + return DoSetPage(source); +} + +bool wxHtmlWindow::DoSetPage(const wxString& source) { wxString newsrc(source); wxDELETE(m_selection); + // we will soon delete all the cells, so clear pointers to them: + m_tmpSelFromCell = NULL; + // pass HTML through registered processors: if (m_Processors || m_GlobalProcessors) { @@ -309,7 +306,7 @@ bool wxHtmlWindow::SetPage(const wxString& source) dc->SetMapMode(wxMM_TEXT); SetBackgroundColour(wxColour(0xFF, 0xFF, 0xFF)); SetBackgroundImage(wxNullBitmap); - m_OpenedPage = m_OpenedAnchor = m_OpenedPageTitle = wxEmptyString; + m_Parser->SetDC(dc); if (m_Cell) { @@ -328,7 +325,7 @@ bool wxHtmlWindow::SetPage(const wxString& source) bool wxHtmlWindow::AppendToPage(const wxString& source) { - return SetPage(*(GetParser()->GetSource()) + source); + return DoSetPage(*(GetParser()->GetSource()) + source); } bool wxHtmlWindow::LoadPage(const wxString& location) @@ -800,7 +797,7 @@ bool wxHtmlWindow::CopySelection(ClipboardType t) #if wxUSE_CLIPBOARD if ( m_selection ) { -#ifdef __UNIX__ +#if defined(__UNIX__) && !defined(__WXMAC__) wxTheClipboard->UsePrimarySelection(t == Primary); #else // !__UNIX__ // Primary selection exists only under X11, so don't do anything under @@ -822,6 +819,8 @@ bool wxHtmlWindow::CopySelection(ClipboardType t) return true; } } +#else + wxUnusedVar(t); #endif // wxUSE_CLIPBOARD return false; @@ -1023,6 +1022,8 @@ void wxHtmlWindow::OnMouseDown(wxMouseEvent& event) CaptureMouse(); } } +#else + wxUnusedVar(event); #endif // wxUSE_CLIPBOARD } @@ -1304,8 +1305,7 @@ void wxHtmlWindow::OnMouseLeave(wxMouseEvent& event) void wxHtmlWindow::OnKeyUp(wxKeyEvent& event) { - if ( IsSelectionEnabled() && - event.GetKeyCode() == 'C' && event.ControlDown() ) + if ( IsSelectionEnabled() && event.GetKeyCode() == 'C' && event.CmdDown() ) { (void) CopySelection(); }