added taborder sample
[wxWidgets.git] / src / html / htmlcell.cpp
index 3a100af4d6c65654147fa1d37217c66967ccac9d..3244eb577fe7e168456b56a4aa026c0e63b3bd50 100644 (file)
     #include "wx/colour.h"
     #include "wx/dc.h"
     #include "wx/settings.h"
+    #include "wx/module.h"
 #endif
 
 #include "wx/html/htmlcell.h"
 #include "wx/html/htmlwin.h"
-#include "wx/module.h"
 
 #include <stdlib.h>
 
@@ -884,12 +884,12 @@ void wxHtmlContainerCell::Layout(int w)
                 if ( step > 0 )
                 {
                     // first count the cells which will get extra space
-                    int total = 0;
+                    int total = -1;
 
                     const wxHtmlCell *c;
                     if ( line != cell )
                     {
-                        for ( c = line->GetNext(); c != cell; c = c->GetNext() )
+                        for ( c = line; c != cell; c = c->GetNext() )
                         {
                             if ( c->IsLinebreakAllowed() )
                             {
@@ -901,11 +901,22 @@ void wxHtmlContainerCell::Layout(int w)
                     // and now extra space to those cells which merit it
                     if ( total )
                     {
-                        // first cell on line is not moved:
-                        line->SetPos(line->GetPosX() + s_indent,
-                                     line->GetPosY() + ypos);
+                        // first visible cell on line is not moved:
+                        while (line !=cell && !line->IsLinebreakAllowed())
+                        {
+                            line->SetPos(line->GetPosX() + s_indent,
+                                         line->GetPosY() + ypos);
+                            line = line->GetNext();
+                        }
+
+                        if (line != cell)
+                        {
+                            line->SetPos(line->GetPosX() + s_indent,
+                                         line->GetPosY() + ypos);
+
+                            line = line->GetNext();
+                        }
 
-                        line = line->GetNext();
                         for ( int n = 0; line != cell; line = line->GetNext() )
                         {
                             if ( line->IsLinebreakAllowed() )