X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd0bab435360c3c0e889dc242458d32760f4630f..b086d55fe11b8b7fc87b476e5cf57c9b403ec6bf:/src/html/htmlcell.cpp diff --git a/src/html/htmlcell.cpp b/src/html/htmlcell.cpp index 3a100af4d6..4bed6f3f9c 100644 --- a/src/html/htmlcell.cpp +++ b/src/html/htmlcell.cpp @@ -15,17 +15,18 @@ #if wxUSE_HTML && wxUSE_STREAMS -#ifndef WXPRECOMP +#ifndef WX_PRECOMP #include "wx/dynarray.h" #include "wx/brush.h" #include "wx/colour.h" #include "wx/dc.h" #include "wx/settings.h" + #include "wx/module.h" + #include "wx/wxcrtvararg.h" #endif #include "wx/html/htmlcell.h" #include "wx/html/htmlwin.h" -#include "wx/module.h" #include @@ -355,7 +356,11 @@ IMPLEMENT_ABSTRACT_CLASS(wxHtmlWordCell, wxHtmlCell) wxHtmlWordCell::wxHtmlWordCell(const wxString& word, const wxDC& dc) : wxHtmlCell() { m_Word = word; - dc.GetTextExtent(m_Word, &m_Width, &m_Height, &m_Descent); + wxCoord w, h, d; + dc.GetTextExtent(m_Word, &w, &h, &d); + m_Width = w; + m_Height = h; + m_Descent = d; SetCanLiveOnPagebreak(false); m_allowLinebreak = true; } @@ -884,12 +889,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 +906,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() )