]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/htmlcell.cpp
Change to wxMenuBar::Remove(),
[wxWidgets.git] / 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(" "), wxT(" "), TRUE);
-    m_Word.Replace(wxT("©"), wxT("(c)"), TRUE);
-    m_Word.Replace(wxT("""), 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);