// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
-// Licence: wxWindows Licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
{
#if 0 // useful for debugging
dc.SetPen(*wxBLACK_PEN);
- dc.DrawRectangle(x+m_PosX,y+m_PosY,m_Width,m_Height);
+ dc.DrawRectangle(x+m_PosX,y+m_PosY,m_Width /* VZ: +1? */ ,m_Height);
#endif
bool drawSelectionAfterCell = false;
// an added complication is that some cells have fixed size and
// shouldn't get any increment (it so happens that these cells
// also don't allow line break on them which provides with an
- // easy way to test for this)
+ // easy way to test for this) -- and neither should the cells
+ // adjacent to them as this could result in a visible space
+ // between two cells separated by, e.g. font change, cell which
+ // is wrong
- const int step = s_width - xpos;
+ int step = s_width - xpos;
if ( step > 0 )
{
// first count the cells which will get extra space
int total = 0;
- for ( wxHtmlCell *c = line; c != cell; c = c->GetNext() )
+
+ const wxHtmlCell *c;
+ if ( line != cell )
{
- if ( c->IsLinebreakAllowed() )
- total++;
+ for ( c = line->GetNext(); c != cell; c = c->GetNext() )
+ {
+ if ( c->IsLinebreakAllowed() )
+ {
+ total++;
+ }
+ }
}
// 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);
+
+ line = line->GetNext();
for ( int n = 0; line != cell; line = line->GetNext() )
{
- line->SetPos(line->GetPosX() + s_indent +
- ((n * step) / total),
- line->GetPosY() + ypos);
-
if ( line->IsLinebreakAllowed() )
{
// offset the next cell relative to this one
// thus increasing our size
n++;
}
+
+ line->SetPos(line->GetPosX() + s_indent +
+ ((n * step) / total),
+ line->GetPosY() + ypos);
}
}
+ else
+ {
+ // this will cause the code to enter "else branch" below:
+ step = 0;
+ }
}
- else // no extra space to distribute
+ // else branch:
+ if ( step <= 0 ) // no extra space to distribute
{
// just set the indent properly
while (line != cell)