simplified justification code; fixed incorrect positioning of first cell on line in justified paragraph

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28126 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2004-07-01 07:59:19 +00:00
parent da1d313d80
commit 1c0ee565da

View File

@ -781,41 +781,38 @@ void wxHtmlContainerCell::Layout(int w)
// first count the cells which will get extra space
int total = 0;
const wxHtmlCell *c,
*prev = NULL,
*next wxDUMMY_INITIALIZE(NULL);
for ( c = line; c != cell; prev = c, c = next )
const wxHtmlCell *c;
if ( line != cell )
{
next = c->GetNext();
if ( c->IsLinebreakAllowed() &&
(next == cell || next->IsLinebreakAllowed()) &&
(!prev || prev->IsLinebreakAllowed()) )
for ( c = line->GetNext(); c != cell; c = c->GetNext() )
{
total++;
if ( c->IsLinebreakAllowed() )
{
total++;
}
}
}
// and now extra space to those cells which merit it
if ( total )
{
prev =
next = NULL;
for ( int n = 0; line != cell; prev = line, line = line->GetNext() )
{
line->SetPos(line->GetPosX() + s_indent +
((n * step) / total),
line->GetPosY() + ypos);
// first cell on line is not moved:
line->SetPos(line->GetPosX() + s_indent,
line->GetPosY() + ypos);
next = line->GetNext();
if ( line->IsLinebreakAllowed() &&
(next == cell ||
next->IsLinebreakAllowed()) &&
(!prev || prev->IsLinebreakAllowed()) )
line = line->GetNext();
for ( int n = 0; line != cell; line = line->GetNext() )
{
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