X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3e65f74e180f1252b1c03bf146b5dad4cc7bec68..dfd0756f75c2a714e0c9d9c66c3ae1c17fca532c:/src/html/m_span.cpp diff --git a/src/html/m_span.cpp b/src/html/m_span.cpp index 025593e19e..959ff4d253 100644 --- a/src/html/m_span.cpp +++ b/src/html/m_span.cpp @@ -34,6 +34,8 @@ 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(); @@ -43,96 +45,7 @@ TAG_HANDLER_BEGIN(SPAN, "SPAN" ) // Load any style parameters wxHtmlStyleParams styleParams(tag); - wxString str; - - 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)); - } - } - - 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) - } - - str = styleParams.GetParam(wxS("font-weight")); - if ( !str.empty() ) - { - // 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())); - } - } - - str = styleParams.GetParam(wxS("font-style")); - if ( !str.empty() ) - { - // "oblique" and "italic" are more or less the same. - // "inherit" (using the parent font) is not supported. - if ( str == wxS("oblique") || str == wxS("italic") ) - { - m_WParser->SetFontItalic(true); - m_WParser->GetContainer()->InsertCell( - new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } - else if ( str == wxS("normal") ) - { - m_WParser->SetFontItalic(false); - m_WParser->GetContainer()->InsertCell( - new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } - } - - str = styleParams.GetParam(wxS("text-decoration")); - if ( !str.empty() ) - { - // Only underline is supported. - if ( str == wxS("underline") ) - { - m_WParser->SetFontUnderlined(true); - m_WParser->GetContainer()->InsertCell( - new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } - } - - str = styleParams.GetParam(wxS("font-family")); - if ( !str.empty() ) - { - m_WParser->SetFontFace(str); - m_WParser->GetContainer()->InsertCell( - new wxHtmlFontCell(m_WParser->CreateCurrentFont())); - } + ApplyStyle(styleParams); ParseInner(tag); @@ -151,6 +64,15 @@ TAG_HANDLER_BEGIN(SPAN, "SPAN" ) new wxHtmlColourCell(oldclr)); } + 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; }