X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/36c4ff4d6501712cbc718a6569599f2725db0d2c..6eef5763a81cf58ba9ca4f6adcaa996d263258a0:/src/html/m_links.cpp diff --git a/src/html/m_links.cpp b/src/html/m_links.cpp index b1f0d0876f..308fa73b34 100644 --- a/src/html/m_links.cpp +++ b/src/html/m_links.cpp @@ -1,30 +1,26 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: m_links.cpp +// Name: src/html/m_links.cpp // Purpose: wxHtml module for links & anchors // Author: Vaclav Slavik // RCS-ID: $Id$ // Copyright: (c) 1999 Vaclav Slavik -// Licence: wxWindows Licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation -#endif - #include "wx/wxprec.h" -#include "wx/defs.h" -#if wxUSE_HTML && wxUSE_STREAMS - #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif -#ifndef WXPRECOMP +#if wxUSE_HTML && wxUSE_STREAMS + +#ifndef WX_PRECOMP #endif #include "wx/html/forcelnk.h" #include "wx/html/m_templ.h" +#include "wx/html/styleparams.h" FORCE_LINK_ME(m_links) @@ -41,11 +37,11 @@ public: void Draw(wxDC& WXUNUSED(dc), int WXUNUSED(x), int WXUNUSED(y), int WXUNUSED(view_y1), int WXUNUSED(view_y2), - wxHtmlRenderingState& WXUNUSED(state)) {} + wxHtmlRenderingInfo& WXUNUSED(info)) {} virtual const wxHtmlCell* Find(int condition, const void* param) const { - if ((condition == wxHTML_COND_ISANCHOR) && + if ((condition == wxHTML_COND_ISANCHOR) && (m_AnchorName == (*((const wxString*)param)))) { return this; @@ -55,11 +51,14 @@ public: return wxHtmlCell::Find(condition, param); } } + + wxDECLARE_NO_COPY_CLASS(wxHtmlAnchorCell); }; TAG_HANDLER_BEGIN(A, "A") + TAG_HANDLER_CONSTR(A) { } TAG_HANDLER_PROC(tag) { @@ -72,27 +71,52 @@ TAG_HANDLER_BEGIN(A, "A") { wxHtmlLinkInfo oldlnk = m_WParser->GetLink(); wxColour oldclr = m_WParser->GetActualColor(); + wxColour oldbackclr = m_WParser->GetActualBackgroundColor(); + int oldbackmode = m_WParser->GetActualBackgroundMode(); + int oldsize = m_WParser->GetFontSize(); + int oldbold = m_WParser->GetFontBold(); + int olditalic = m_WParser->GetFontItalic(); int oldund = m_WParser->GetFontUnderlined(); + wxString oldfontface = m_WParser->GetFontFace(); wxString name(tag.GetParam( wxT("HREF") )), target; if (tag.HasParam( wxT("TARGET") )) target = tag.GetParam( wxT("TARGET") ); + + // set default styles, might get overridden by ApplyStyle m_WParser->SetActualColor(m_WParser->GetLinkColor()); m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(m_WParser->GetLinkColor())); - m_WParser->SetFontUnderlined(TRUE); + m_WParser->SetFontUnderlined(true); m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont())); m_WParser->SetLink(wxHtmlLinkInfo(name, target)); + // Load any style parameters + wxHtmlStyleParams styleParams(tag); + ApplyStyle(styleParams); + ParseInner(tag); m_WParser->SetLink(oldlnk); + m_WParser->SetFontSize(oldsize); + m_WParser->SetFontBold(oldbold); + m_WParser->SetFontFace(oldfontface); + m_WParser->SetFontItalic(olditalic); m_WParser->SetFontUnderlined(oldund); m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont())); m_WParser->SetActualColor(oldclr); m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr)); - return TRUE; + if (oldbackmode != m_WParser->GetActualBackgroundMode() || + oldbackclr != m_WParser->GetActualBackgroundColor()) + { + m_WParser->SetActualBackgroundMode(oldbackmode); + m_WParser->SetActualBackgroundColor(oldbackclr); + m_WParser->GetContainer()->InsertCell( + new wxHtmlColourCell(oldbackclr, oldbackmode == wxTRANSPARENT ? wxHTML_CLR_TRANSPARENT_BACKGROUND : wxHTML_CLR_BACKGROUND)); + } + + return true; } - else return FALSE; + else return false; } TAG_HANDLER_END(A)