]> git.saurik.com Git - wxWidgets.git/blobdiff - src/richtext/richtexthtml.cpp
fix VC6 ICE; don't call the function which doesn't compare the objects operator=...
[wxWidgets.git] / src / richtext / richtexthtml.cpp
index 2ec15138eb717d7daa0dbd5966b017e1db4b559a..301065a91ec9244be0584cf809dff0b88572770a 100644 (file)
@@ -53,7 +53,7 @@ wxRichTextHTMLHandler::wxRichTextHTMLHandler(const wxString& name, const wxStrin
 bool wxRichTextHTMLHandler::CanHandle(const wxString& filename) const
 {
     wxString path, file, ext;
-    wxSplitPath(filename, & path, & file, & ext);
+    wxFileName::SplitPath(filename, & path, & file, & ext);
 
     return (ext.Lower() == wxT("html") || ext.Lower() == wxT("htm"));
 }
@@ -85,8 +85,6 @@ bool wxRichTextHTMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream&
     if ((GetFlags() & wxRICHTEXT_HANDLER_NO_HEADER_FOOTER) == 0)
         str << wxT("<html><head></head><body>\n");
 
-    str << wxT("<table border=0 cellpadding=0 cellspacing=0><tr><td width=\"100%\">");
-
     OutputFont(currentParaStyle, str);
 
     m_font = false;
@@ -131,7 +129,7 @@ bool wxRichTextHTMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream&
                 }
 
                 wxRichTextImage* image = wxDynamicCast(obj, wxRichTextImage);
-                if( image && !image->IsEmpty())
+                if( image && (!image->IsEmpty() || image->GetImageBlock().GetData()))
                     WriteImage( image, stream );
 
                 node2 = node2->GetNext();
@@ -148,8 +146,6 @@ bool wxRichTextHTMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream&
 
     str << wxT("</font>");
 
-    str << wxT("</td></tr></table><p>");
-
     if ((GetFlags() & wxRICHTEXT_HANDLER_NO_HEADER_FOOTER) == 0)
         str << wxT("</body></html>");
 
@@ -219,9 +215,7 @@ void wxRichTextHTMLHandler::BeginParagraphFormatting(const wxTextAttr& WXUNUSED(
 {
     if (thisStyle.HasPageBreak())
     {
-        str << wxT("</tr></td></table>");
         str << wxT("<div style=\"page-break-after:always\"></div>\n");
-        str << wxT("<table border=0 cellpadding=0 cellspacing=0><tr><td width=\"100%\">");
     }
 
     if (thisStyle.HasLeftIndent() && thisStyle.GetLeftIndent() != 0)
@@ -245,8 +239,9 @@ void wxRichTextHTMLHandler::BeginParagraphFormatting(const wxTextAttr& WXUNUSED(
                 int listType = TypeOfList(thisStyle, tag);
                 m_listTypes.Add(listType);
 
-                wxString align = GetAlignment(thisStyle);
-                str << wxString::Format(wxT("<p align=\"%s\">"), align.c_str());
+                // wxHTML needs an extra <p> before a list when using <p> ... </p> in previous paragraphs.
+                // TODO: pass a flag that indicates we're using wxHTML.
+                str << wxT("<p>\n");
 
                 str << tag;
             }
@@ -293,9 +288,11 @@ void wxRichTextHTMLHandler::EndParagraphFormatting(const wxTextAttr& WXUNUSED(cu
         if (thisStyle.HasFont())
             stream << wxT("</font>");
 
-        stream << wxT("</td></tr></table>\n");
+        stream << wxT("</td></tr></table></p>\n");
         m_inTable = false;
     }
+    else if (!thisStyle.HasBulletStyle())
+        stream << wxT("</p>\n");
 }
 
 /// Closes lists to level (-1 means close all)