]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/htmlcell.cpp
Put gridg.h back so that it gets installed
[wxWidgets.git] / src / html / htmlcell.cpp
index eb8f940064a663b97646d0bbeb1dbc773478834c..ac40ae3c7f4389f0eb401ed8b9d0cce5e96aea76 100644 (file)
@@ -46,6 +46,25 @@ void wxHtmlCell::OnMouseClick(wxWindow *parent, int x, int y,
 
 
 
+bool wxHtmlCell::AdjustPagebreak(int *pagebreak)
+{
+
+    if ((!m_CanLiveOnPagebreak) && 
+                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;
+    }
+}
+
+
+
+
 //-----------------------------------------------------------------------------
 // wxHtmlWordCell
 //-----------------------------------------------------------------------------
@@ -59,6 +78,7 @@ wxHtmlWordCell::wxHtmlWordCell(const wxString& word, wxDC& dc) : wxHtmlCell()
     m_Word.Replace("&gt;", ">", TRUE);
     m_Word.Replace("&amp;", "&", TRUE);
     dc.GetTextExtent(m_Word, &m_Width, &m_Height, &m_Descent);
+    SetCanLiveOnPagebreak(FALSE);
 }
 
 
@@ -129,6 +149,24 @@ int wxHtmlContainerCell::GetIndentUnits(int ind) const
 
 
 
+bool wxHtmlContainerCell::AdjustPagebreak(int *pagebreak)
+{
+    if (!m_CanLiveOnPagebreak) 
+        return wxHtmlCell::AdjustPagebreak(pagebreak);
+    else {
+        wxHtmlCell *c = GetFirstCell();
+        bool rt = FALSE;
+
+        while (c) {
+            if (c -> AdjustPagebreak(pagebreak)) rt = TRUE;
+            c = c -> GetNext();
+        }
+        return rt;
+    }
+}
+
+
+
 void wxHtmlContainerCell::Layout(int w)
 {
     wxHtmlCell *cell = m_Cells, *line = m_Cells;
@@ -138,9 +176,9 @@ void wxHtmlContainerCell::Layout(int w)
     int ysizeup = 0, ysizedown = 0;
 
     /*
-    
+
     WIDTH ADJUSTING :
-    
+
     */
 
     if (m_WidthFloatUnits == HTML_UNITS_PERCENT) {
@@ -161,7 +199,7 @@ void wxHtmlContainerCell::Layout(int w)
     /*
 
     LAYOUTING :
-    
+
     */
 
     // adjust indentation:
@@ -169,7 +207,7 @@ void wxHtmlContainerCell::Layout(int w)
     s_width = m_Width - s_indent - ((m_IndentRight < 0) ? (-m_IndentRight * m_Width / 100) : m_IndentRight);
 
     m_MaxLineWidth = 0;
-    
+
     // my own layouting:
     while (cell != NULL) {
         switch (m_AlignVer) {
@@ -354,7 +392,7 @@ void wxHtmlContainerCell::SetWidthFloat(const wxHtmlTag& tag)
 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;
@@ -463,12 +501,8 @@ void wxHtmlWidgetCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
         c = c -> GetParent();
     }
 
-/*
     ((wxScrolledWindow*)(m_Wnd -> GetParent())) -> ViewStart(&stx, &sty);
     m_Wnd -> SetSize(absx - HTML_SCROLL_STEP * stx, absy  - HTML_SCROLL_STEP * sty, m_Width, m_Height);
-*/
-
-    m_Wnd -> SetSize(absx, absy, m_Width, m_Height);
 
     wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
 }
@@ -485,14 +519,10 @@ void wxHtmlWidgetCell::DrawInvisible(wxDC& dc, int x, int y)
         absy += c -> GetPosY();
         c = c -> GetParent();
     }
-    
-/*
+
     ((wxScrolledWindow*)(m_Wnd -> GetParent())) -> ViewStart(&stx, &sty);
     m_Wnd -> SetSize(absx - HTML_SCROLL_STEP * stx, absy  - HTML_SCROLL_STEP * sty, m_Width, m_Height);
-*/
 
-    m_Wnd -> SetSize(absx, absy, m_Width, m_Height);
-    
     wxHtmlCell::DrawInvisible(dc, x, y);
 }