X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/04dbb6467be8f564f380bd9a1106fbdecbd26a98..ef70f0ecdbc4268923e132b257c95e8a2525f4ca:/src/html/htmlcell.cpp?ds=sidebyside diff --git a/src/html/htmlcell.cpp b/src/html/htmlcell.cpp index 99935751ca..9e49b42543 100644 --- a/src/html/htmlcell.cpp +++ b/src/html/htmlcell.cpp @@ -48,7 +48,6 @@ wxHtmlCell::wxHtmlCell() : wxObject() wxHtmlCell::~wxHtmlCell() { if (m_Link) delete m_Link; - if (m_Next) delete m_Next; } @@ -74,15 +73,10 @@ bool wxHtmlCell::AdjustPagebreak(int *pagebreak) const m_PosY < *pagebreak && m_PosY + m_Height > *pagebreak) { *pagebreak = m_PosY; - if (m_Next != NULL) m_Next->AdjustPagebreak(pagebreak); return TRUE; } - else - { - if (m_Next != NULL) return m_Next->AdjustPagebreak(pagebreak); - else return FALSE; - } + return FALSE; } @@ -100,28 +94,12 @@ void wxHtmlCell::SetLink(const wxHtmlLinkInfo& link) void wxHtmlCell::Layout(int w) { SetPos(0, 0); - if (m_Next) m_Next->Layout(w); -} - - -void wxHtmlCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2) -{ - if (m_Next) m_Next->Draw(dc, x, y, view_y1, view_y2); } - -void wxHtmlCell::DrawInvisible(wxDC& dc, int x, int y) -{ - if (m_Next) m_Next->DrawInvisible(dc, x, y); -} - - - const wxHtmlCell* wxHtmlCell::Find(int condition, const void* param) const { - if (m_Next) return m_Next->Find(condition, param); - else return NULL; + return NULL; } @@ -142,7 +120,6 @@ wxHtmlWordCell::wxHtmlWordCell(const wxString& word, wxDC& dc) : wxHtmlCell() void wxHtmlWordCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2) { dc.DrawText(m_Word, x + m_PosX, y + m_PosY); - wxHtmlCell::Draw(dc, x, y, view_y1, view_y2); } @@ -170,7 +147,13 @@ wxHtmlContainerCell::wxHtmlContainerCell(wxHtmlContainerCell *parent) : wxHtmlCe wxHtmlContainerCell::~wxHtmlContainerCell() { - if (m_Cells) delete m_Cells; + wxHtmlCell *cell = m_Cells; + while ( cell ) + { + wxHtmlCell *cellNext = cell->GetNext(); + delete cell; + cell = cellNext; + } } @@ -225,10 +208,12 @@ bool wxHtmlContainerCell::AdjustPagebreak(int *pagebreak) const while (c) { - if (c->AdjustPagebreak(&pbrk)) rt = TRUE; + if (c->AdjustPagebreak(&pbrk)) + rt = TRUE; c = c->GetNext(); } - if (rt) *pagebreak = pbrk + m_PosY; + if (rt) + *pagebreak = pbrk + m_PosY; return rt; } } @@ -273,7 +258,8 @@ void wxHtmlContainerCell::Layout(int w) { int l = (m_IndentLeft < 0) ? (-m_IndentLeft * m_Width / 100) : m_IndentLeft; int r = (m_IndentRight < 0) ? (-m_IndentRight * m_Width / 100) : m_IndentRight; - m_Cells->Layout(m_Width - (l + r)); + for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext()) + cell->Layout(m_Width - (l + r)); } /* @@ -420,23 +406,32 @@ void wxHtmlContainerCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2) dc.DrawLine(x + m_PosX, y + m_PosY + m_Height - 1, x + m_PosX + m_Width - 1, y + m_PosY + m_Height - 1); } - if (m_Cells) m_Cells->Draw(dc, x + m_PosX, y + m_PosY, view_y1, view_y2); + if (m_Cells) + { + for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext()) + cell->Draw(dc, x + m_PosX, y + m_PosY, view_y1, view_y2); + } } // container invisible, just proceed font+color changing: else { - if (m_Cells) m_Cells->DrawInvisible(dc, x + m_PosX, y + m_PosY); + if (m_Cells) + { + for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext()) + cell->DrawInvisible(dc, x + m_PosX, y + m_PosY); + } } - - wxHtmlCell::Draw(dc, x, y, view_y1, view_y2); } void wxHtmlContainerCell::DrawInvisible(wxDC& dc, int x, int y) { - if (m_Cells) m_Cells->DrawInvisible(dc, x + m_PosX, y + m_PosY); - wxHtmlCell::DrawInvisible(dc, x, y); + if (m_Cells) + { + for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext()) + cell->DrawInvisible(dc, x + m_PosX, y + m_PosY); + } } @@ -519,15 +514,17 @@ void wxHtmlContainerCell::SetWidthFloat(const wxHtmlTag& tag, double pixel_scale const wxHtmlCell* wxHtmlContainerCell::Find(int condition, const void* param) const { - const wxHtmlCell *r = NULL; - if (m_Cells) - { - r = m_Cells->Find(condition, param); - if (r) return r; - } + { + const wxHtmlCell *r = NULL; - return wxHtmlCell::Find(condition, param); + for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext()) + { + r = cell->Find(condition, param); + if (r) return r; + } + } + return NULL; } @@ -569,7 +566,6 @@ void wxHtmlColourCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2) dc.SetBackground(wxBrush(m_Colour, wxSOLID)); dc.SetTextBackground(m_Colour); } - wxHtmlCell::Draw(dc, x, y, view_y1, view_y2); } void wxHtmlColourCell::DrawInvisible(wxDC& dc, int x, int y) @@ -581,7 +577,6 @@ void wxHtmlColourCell::DrawInvisible(wxDC& dc, int x, int y) dc.SetBackground(wxBrush(m_Colour, wxSOLID)); dc.SetTextBackground(m_Colour); } - wxHtmlCell::DrawInvisible(dc, x, y); } @@ -594,13 +589,11 @@ void wxHtmlColourCell::DrawInvisible(wxDC& dc, int x, int y) void wxHtmlFontCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2) { dc.SetFont(m_Font); - wxHtmlCell::Draw(dc, x, y, view_y1, view_y2); } void wxHtmlFontCell::DrawInvisible(wxDC& dc, int x, int y) { dc.SetFont(m_Font); - wxHtmlCell::DrawInvisible(dc, x, y); } @@ -638,8 +631,6 @@ void wxHtmlWidgetCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2) ((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty); m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height); - - wxHtmlCell::Draw(dc, x, y, view_y1, view_y2); } @@ -658,8 +649,6 @@ void wxHtmlWidgetCell::DrawInvisible(wxDC& dc, int x, int y) ((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty); m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height); - - wxHtmlCell::DrawInvisible(dc, x, y); }