]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/m_pre.cpp
Compilo.
[wxWidgets.git] / src / html / m_pre.cpp
index 27fa27a31a110695632a275ad28095f541dea5e1..91cc6579d8bbd6a0d7132036770defd250661d95 100644 (file)
@@ -4,10 +4,10 @@
 // Author:      Vaclav Slavik
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vaclav Slavik
 // Author:      Vaclav Slavik
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vaclav Slavik
-// Licence:     wxWindows Licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation
 #endif
 
 #pragma implementation
 #endif
 
@@ -35,27 +35,39 @@ FORCE_LINK_ME(m_pre)
 static wxString LINKAGEMODE HtmlizeWhitespaces(const wxString& str)
 {
     wxString out;
 static wxString LINKAGEMODE HtmlizeWhitespaces(const wxString& str)
 {
     wxString out;
-    size_t i = 0, j = 0, len = str.Len();
-    for (i = 0; i < len; i++)
+    size_t len = str.Len();
+    size_t linepos = 0;
+    for (size_t i = 0; i < len; i++)
     {
         switch (str[i])
         {
             case wxT('<'):
                 while (i < len && str[i] != wxT('>'))
     {
         switch (str[i])
         {
             case wxT('<'):
                 while (i < len && str[i] != wxT('>'))
+                {
                     out << str[i++];
                     out << str[i++];
+                    linepos++;
+                }
                 out << wxT('>');
                 out << wxT('>');
+                linepos++;
                 break;
             case wxT(' '):
                 out << wxT("&nbsp;");
                 break;
             case wxT(' '):
                 out << wxT("&nbsp;");
+                linepos++;
                 break;
             case wxT('\n'):
                 out << wxT("<br>");
                 break;
             case wxT('\n'):
                 out << wxT("<br>");
+                linepos = 0;
                 break;
             case wxT('\t'):
                 break;
             case wxT('\t'):
-                for (j = 8 - i%8; j > 0; j--) out << wxT("&nbsp;");
+                {
+                    for (size_t j = 8 - linepos % 8; j > 0; j--)
+                        out << wxT("&nbsp;");
+                    linepos += 8 - linepos % 8;
+                }
                 break;
             default:
                 out << str[i];
                 break;
             default:
                 out << str[i];
+                linepos++;
                 break;
         }
     }
                 break;
         }
     }
@@ -91,6 +103,8 @@ TAG_HANDLER_BEGIN(PRE, "PRE")
 
         m_WParser->CloseContainer();
         c = m_WParser->OpenContainer();
 
         m_WParser->CloseContainer();
         c = m_WParser->OpenContainer();
+        c->SetWidthFloat(tag);
+        c = m_WParser->OpenContainer();
         c->SetAlignHor(wxHTML_ALIGN_LEFT);
         c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
 
         c->SetAlignHor(wxHTML_ALIGN_LEFT);
         c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
 
@@ -103,6 +117,7 @@ TAG_HANDLER_BEGIN(PRE, "PRE")
         m_Parser->DoParsing();
         m_Parser->RestoreState();
 
         m_Parser->DoParsing();
         m_Parser->RestoreState();
 
+        m_WParser->CloseContainer();
         m_WParser->CloseContainer();
         c = m_WParser->OpenContainer();
 
         m_WParser->CloseContainer();
         c = m_WParser->OpenContainer();