X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f68e16c5fcf53c411742c8338a290addc5fb4b62..88932ec82d048d006cdc81bd309f5e59aee799ac:/src/html/m_span.cpp diff --git a/src/html/m_span.cpp b/src/html/m_span.cpp index 6df438311f..959ff4d253 100644 --- a/src/html/m_span.cpp +++ b/src/html/m_span.cpp @@ -34,80 +34,43 @@ TAG_HANDLER_BEGIN(SPAN, "SPAN" ) TAG_HANDLER_PROC(tag) { 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 oldunderlined = m_WParser->GetFontUnderlined(); + wxString oldfontface = m_WParser->GetFontFace(); // Load any style parameters wxHtmlStyleParams styleParams(tag); - wxString str; + ApplyStyle(styleParams); - str = styleParams.GetParam(wxS("color")); - if ( !str.empty() ) - { - wxColour clr; - if ( wxHtmlTag::ParseAsColour(str, &clr) ) - { - m_WParser->SetActualColor(clr); - m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr)); - } - } + ParseInner(tag); - str = styleParams.GetParam(wxS("font-size")); - if ( !str.empty() ) - { - // Point size - int foundIndex = str.Find(wxS("pt")); - if (foundIndex != wxNOT_FOUND) - { - str.Truncate(foundIndex); - - long sizeValue; - if (str.ToLong(&sizeValue) == true) - { - // Set point size - m_WParser->SetFontPointSize(sizeValue); - m_WParser->GetContainer()->InsertCell( - new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } - } - // else: check for other ways of specifying size (TODO) - } + m_WParser->SetFontSize(oldsize); + m_WParser->SetFontBold(oldbold); + m_WParser->SetFontUnderlined(oldunderlined); + m_WParser->SetFontFace(oldfontface); + m_WParser->SetFontItalic(olditalic); + m_WParser->GetContainer()->InsertCell( + new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - str = styleParams.GetParam(wxS("font-weight")); - if ( !str.empty() ) + if (oldclr != m_WParser->GetActualColor()) { - // Only bold and normal supported just now - if ( str == wxS("bold") ) - { - m_WParser->SetFontBold(true); - m_WParser->GetContainer()->InsertCell( - new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } - else if ( str == wxS("normal") ) - { - m_WParser->SetFontBold(false); - m_WParser->GetContainer()->InsertCell( - new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } + m_WParser->SetActualColor(oldclr); + m_WParser->GetContainer()->InsertCell( + new wxHtmlColourCell(oldclr)); } - ParseInner(tag); - - if (oldbold != m_WParser->GetFontBold()) - { - m_WParser->SetFontBold(oldbold); - m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } - if (oldsize != m_WParser->GetFontSize()) + if (oldbackmode != m_WParser->GetActualBackgroundMode() || + oldbackclr != m_WParser->GetActualBackgroundColor()) { - m_WParser->SetFontSize(oldsize); - m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } - if (oldclr != m_WParser->GetActualColor()) - { - m_WParser->SetActualColor(oldclr); - m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr)); + 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;