]> git.saurik.com Git - wxWidgets.git/commitdiff
a bit better solution for ©,  etc. (in terms of speed)
authorVáclav Slavík <vslavik@fastmail.fm>
Thu, 25 Nov 1999 17:19:22 +0000 (17:19 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Thu, 25 Nov 1999 17:19:22 +0000 (17:19 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4691 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/html/htmlcell.cpp

index eab14854384e21abfd28488b5f57642a222ca4ba..71633156ea371002239144af3da5644b5fe3933e 100644 (file)
@@ -73,20 +73,26 @@ bool wxHtmlCell::AdjustPagebreak(int *pagebreak)
 wxHtmlWordCell::wxHtmlWordCell(const wxString& word, wxDC& dc) : wxHtmlCell()
 {
     m_Word = word;
-
-    m_Word.Replace(wxT("&nbsp;"), wxT(" "), TRUE);
-    m_Word.Replace(wxT("&copy;"), wxT("(c)"), TRUE);
-    m_Word.Replace(wxT("&quot;"), wxT("\""), TRUE);
-    m_Word.Replace(wxT("&lt;"), wxT("<"), TRUE);
-    m_Word.Replace(wxT("&gt;"), wxT(">"), TRUE);
-    m_Word.Replace(wxT("&amp;"), wxT("&"), TRUE);
-
-    m_Word.Replace(wxT("&nbsp "), wxT(" "), TRUE);
-    m_Word.Replace(wxT("&copy "), wxT("(c)"), TRUE);
-    m_Word.Replace(wxT("&quot "), wxT("\""), TRUE);
-    m_Word.Replace(wxT("&lt "), wxT("<"), TRUE);
-    m_Word.Replace(wxT("&gt "), wxT(">"), TRUE);
-    m_Word.Replace(wxT("&amp "), wxT("&"), TRUE);
+    
+    if (m_Word.Find(wxT('&')) != -1) 
+    {
+        static wxChar* substitutions[][3] = 
+                {
+                    { wxT("&nbsp;"), wxT("&nbsp "), wxT(" ") },
+                    { wxT("&copy;"), wxT("&copy "), wxT("(c)") },
+                    { wxT("&quot;"), wxT("&quot "), wxT("\"") },
+                    { wxT("&lt;"), wxT("&lt "), wxT("<") },
+                    { wxT("&gt;"), wxT("&gt "), wxT(">") },
+                    { wxT("&amp;"), wxT("&amp "), wxT("&")  /*this one should be last one*/ },
+                    { NULL, NULL, NULL }
+                };
+
+        for (int i = 0; substitutions[i][0] != NULL; i++) 
+        {
+            m_Word.Replace(substitutions[i][0], substitutions[i][2], TRUE);
+            m_Word.Replace(substitutions[i][1], substitutions[i][2], TRUE);
+        }
+    }
 
     dc.GetTextExtent(m_Word, &m_Width, &m_Height, &m_Descent);
     SetCanLiveOnPagebreak(FALSE);