]> 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 ea07bad616c5099c4398ae6afceb892b7c943b1f..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) {
@@ -323,9 +361,9 @@ void wxHtmlContainerCell::SetAlign(const wxHtmlTag& tag)
         alg.MakeUpper();
         if (alg == "CENTER")
             SetAlignHor(HTML_ALIGN_CENTER);
-        else if (alg == "LEFT(")
+        else if (alg == "LEFT")
             SetAlignHor(HTML_ALIGN_LEFT);
-        else if (alg == "RIGHT(")
+        else if (alg == "RIGHT")
             SetAlignHor(HTML_ALIGN_RIGHT);
     }
 }
@@ -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;
@@ -464,9 +502,7 @@ void wxHtmlWidgetCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
     }
 
     ((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 -> Refresh();
 
     wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
 }
@@ -483,9 +519,10 @@ void wxHtmlWidgetCell::DrawInvisible(wxDC& dc, int x, int y)
         absy += c -> GetPosY();
         c = c -> GetParent();
     }
-    ((wxScrolledWindow*)(m_Wnd -> GetParent())) -> ViewStart(&stx, &sty);
 
+    ((wxScrolledWindow*)(m_Wnd -> GetParent())) -> ViewStart(&stx, &sty);
     m_Wnd -> SetSize(absx - HTML_SCROLL_STEP * stx, absy  - HTML_SCROLL_STEP * sty, m_Width, m_Height);
+
     wxHtmlCell::DrawInvisible(dc, x, y);
 }