]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/richedit/wxlparser.cpp
Fix wxListCtrl background colour bug Part I
[wxWidgets.git] / samples / richedit / wxlparser.cpp
index b3a961e3746f4565ecd70d5d880d4f623e94d41e..dc457fb85d86d47d63efe0d21aa90a8859444f6b 100644 (file)
@@ -10,7 +10,7 @@
 #   pragma implementation "wxlparser.h"
 #endif
 
-#include <wx/wxprec.h>
+#include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
 #  pragma hdrstop
@@ -73,7 +73,8 @@ void wxLayoutImportText(wxLayoutList *list, wxString const &str)
 
 static
 wxString wxLayoutExportCmdAsHTML(wxLayoutObjectCmd const & cmd,
-                                 wxLayoutStyleInfo *styleInfo)
+                                 wxLayoutStyleInfo *styleInfo,
+                                 bool firstTime)
 {
    static char buffer[20];
    wxString html;
@@ -128,7 +129,7 @@ wxString wxLayoutExportCmdAsHTML(wxLayoutObjectCmd const & cmd,
 
    html +=">";
 
-   if(styleInfo != NULL)
+   if(styleInfo != NULL && ! firstTime)
       html ="</font>"+html; // terminate any previous font command
 
    if((si->weight == wxBOLD) && ( (!styleInfo) || (styleInfo->weight != wxBOLD)))
@@ -164,6 +165,7 @@ wxLayoutExportStatus::wxLayoutExportStatus(wxLayoutList *list)
    m_si = list->GetDefaultStyleInfo();
    m_line = list->GetFirstLine();
    m_iterator = m_line->GetFirstObject();
+   m_FirstTime = TRUE;
 }
 
 
@@ -178,7 +180,7 @@ wxLayoutExportObject *wxLayoutExport(wxLayoutExportStatus *status,
                                      int mode, int flags)
 {
    wxASSERT(status);
-   wxLayoutExportObject * export;
+   wxLayoutExportObject * exp;
 
    if(status->m_iterator == NULLIT) // end of line
    {
@@ -186,29 +188,29 @@ wxLayoutExportObject *wxLayoutExport(wxLayoutExportStatus *status,
          // reached end of list
          return NULL;
    }
-   export = new wxLayoutExportObject();
+   exp = new wxLayoutExportObject();
    wxLayoutObjectType type;
    if(status->m_iterator != NULLIT)
    {
       type = (** status->m_iterator).GetType();
       if( mode == WXLO_EXPORT_AS_OBJECTS || ! WXLO_IS_TEXT(type)) // simple case
       {
-         export->type = WXLO_EXPORT_OBJECT;
-         export->content.object = *status->m_iterator;
+         exp->type = WXLO_EXPORT_OBJECT;
+         exp->content.object = *status->m_iterator;
          status->m_iterator++;
-         return export;
+         return exp;
       }
    }
    else
    {  // iterator == NULLIT
       if(mode == WXLO_EXPORT_AS_OBJECTS)
       {
-         export->type = WXLO_EXPORT_EMPTYLINE;
-         export->content.object = NULL; //empty line
+         exp->type = WXLO_EXPORT_EMPTYLINE;
+         exp->content.object = NULL; //empty line
          status->m_line = status->m_line->GetNextLine();
          if(status->m_line)
             status->m_iterator = status->m_line->GetFirstObject();
-         return export;
+         return exp;
       }
       else
          type = WXLO_TYPE_TEXT;
@@ -220,7 +222,7 @@ wxLayoutExportObject *wxLayoutExport(wxLayoutExportStatus *status,
    {
       while(status->m_iterator == NULLIT)
       {
-         if(flags & WXLO_EXPORT_AS_HTML)
+         if(mode & WXLO_EXPORT_AS_HTML)
             *str += "<br>";
          if(flags & WXLO_EXPORT_WITH_CRLF)
             *str += "\r\n";
@@ -245,18 +247,19 @@ wxLayoutExportObject *wxLayoutExport(wxLayoutExportStatus *status,
          break;
       case WXLO_TYPE_CMD:
          if(mode == WXLO_EXPORT_AS_HTML)
-            *str += wxLayoutExportCmdAsHTML(*(wxLayoutObjectCmd const
-                                              *)*status->m_iterator, & status->m_si);
+            *str += wxLayoutExportCmdAsHTML(
+               *(wxLayoutObjectCmd const *)*status->m_iterator,
+               & status->m_si, status->m_FirstTime);
+         status->m_FirstTime = FALSE;
          break;
       default:  // ignore icons
          ;
       }
       status->m_iterator++;
    }
-
-   export->type = (mode == WXLO_EXPORT_AS_HTML)
+   exp->type = (mode == WXLO_EXPORT_AS_HTML)
       ?  WXLO_EXPORT_HTML : WXLO_EXPORT_TEXT;
-   export->content.text = str;
-   return export;
+   exp->content.text = str;
+   return exp;
 }