]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/htmlcell.cpp
added <address>, <code>, <kbd>, <samp>, <small>, <big> tags
[wxWidgets.git] / src / html / htmlcell.cpp
index e8680be944ef868e670de1f7822dcca267d65e2f..542c1c656e3af11270bd422445182082964416fb 100644 (file)
 // wxHtmlCell
 //-----------------------------------------------------------------------------
 
+wxHtmlCell::wxHtmlCell() : wxObject() 
+{
+    m_Next = NULL; 
+    m_Parent = NULL; 
+    m_Width = m_Height = m_Descent = 0; 
+    m_CanLiveOnPagebreak = TRUE;
+    m_Link = NULL;
+}
 
-void wxHtmlCell::OnMouseClick(wxWindow *parent, int x, int y,
-                              bool WXUNUSED(left),
-                              bool WXUNUSED(middle),
-                              bool WXUNUSED(right))
+wxHtmlCell::~wxHtmlCell() 
 {
-    wxString lnk = GetLink(x, y);
-    if (lnk != wxEmptyString)
-        ((wxHtmlWindow*)parent) -> OnLinkClicked(lnk);
+    if (m_Link) delete m_Link; 
+    if (m_Next) delete m_Next;
+}
+
+
+void wxHtmlCell::OnMouseClick(wxWindow *parent, int x, int y, 
+                              const wxMouseEvent& event)
+{
+    wxHtmlLinkInfo *lnk = GetLink(x, y);
+    if (lnk != NULL)
+    {
+        wxHtmlLinkInfo lnk2(*lnk);
+        lnk2.SetEvent(&event);
+        lnk2.SetHtmlCell(this);
+        ((wxHtmlWindow*)parent) -> OnLinkClicked(lnk2);
         // note : this overcasting is legal because parent is *always* wxHtmlWindow
+    }
 }
 
 
 
 bool wxHtmlCell::AdjustPagebreak(int *pagebreak)
 {
-
     if ((!m_CanLiveOnPagebreak) && 
                 m_PosY < *pagebreak && m_PosY + m_Height > *pagebreak) {
         *pagebreak = m_PosY;
@@ -65,6 +82,13 @@ bool wxHtmlCell::AdjustPagebreak(int *pagebreak)
 
 
 
+void wxHtmlCell::SetLink(const wxHtmlLinkInfo& link) 
+{
+    if (m_Link) delete m_Link;
+    m_Link = new wxHtmlLinkInfo(link);
+}
+
+
 
 //-----------------------------------------------------------------------------
 // wxHtmlWordCell
@@ -344,7 +368,7 @@ void wxHtmlContainerCell::DrawInvisible(wxDC& dc, int x, int y)
 
 
 
-wxString wxHtmlContainerCell::GetLink(int x, int y) const
+wxHtmlLinkInfo *wxHtmlContainerCell::GetLink(int x, int y) const
 {
     wxHtmlCell *c = m_Cells;
     int cx, cy, cw, ch;
@@ -356,7 +380,7 @@ wxString wxHtmlContainerCell::GetLink(int x, int y) const
             return c -> GetLink(x - cx, y - cy);
         c = c -> GetNext();
     }
-    return wxEmptyString;
+    return NULL;
 }
 
 
@@ -376,14 +400,14 @@ void wxHtmlContainerCell::InsertCell(wxHtmlCell *f)
 
 void wxHtmlContainerCell::SetAlign(const wxHtmlTag& tag)
 {
-    if (tag.HasParam("ALIGN")) {
-        wxString alg = tag.GetParam("ALIGN");
+    if (tag.HasParam(wxT("ALIGN"))) {
+        wxString alg = tag.GetParam(wxT("ALIGN"));
         alg.MakeUpper();
-        if (alg == "CENTER")
+        if (alg == wxT("CENTER"))
             SetAlignHor(wxHTML_ALIGN_CENTER);
-        else if (alg == "LEFT")
+        else if (alg == wxT("LEFT"))
             SetAlignHor(wxHTML_ALIGN_LEFT);
-        else if (alg == "RIGHT")
+        else if (alg == wxT("RIGHT"))
             SetAlignHor(wxHTML_ALIGN_RIGHT);
     }
 }
@@ -392,11 +416,11 @@ void wxHtmlContainerCell::SetAlign(const wxHtmlTag& tag)
 
 void wxHtmlContainerCell::SetWidthFloat(const wxHtmlTag& tag, double pixel_scale)
 {
-    if (tag.HasParam("WIDTH")) {
+    if (tag.HasParam(wxT("WIDTH"))) {
         int wdi;
-        wxString wd = tag.GetParam("WIDTH");
+        wxString wd = tag.GetParam(wxT("WIDTH"));
 
-        if (wd[wd.Length()-1] == '%') {
+        if (wd[wd.Length()-1] == wxT('%')) {
             wxSscanf(wd.c_str(), wxT("%i%%"), &wdi);
             SetWidthFloat(wdi, wxHTML_UNITS_PERCENT);
         }
@@ -423,7 +447,7 @@ const wxHtmlCell* wxHtmlContainerCell::Find(int condition, const void* param) co
 
 
 
-void wxHtmlContainerCell::OnMouseClick(wxWindow *parent, int x, int y, bool left, bool middle, bool right)
+void wxHtmlContainerCell::OnMouseClick(wxWindow *parent, int x, int y, const wxMouseEvent& event)
 {
     if (m_Cells) {
         wxHtmlCell *c = m_Cells;
@@ -432,7 +456,7 @@ void wxHtmlContainerCell::OnMouseClick(wxWindow *parent, int x, int y, bool left
                     (c -> GetPosY() <= y) &&
                     (c -> GetPosX() + c -> GetWidth() > x) &&
                     (c -> GetPosY() + c -> GetHeight() > y)) {
-                c -> OnMouseClick(parent, x - c -> GetPosX(), y - c -> GetPosY(), left, middle, right);
+                c -> OnMouseClick(parent, x - c -> GetPosX(), y - c -> GetPosY(), event);
                 break;
             }
             c = c -> GetNext();
@@ -479,13 +503,13 @@ 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);
+    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);
+    dc.SetFont(m_Font);
     wxHtmlCell::DrawInvisible(dc, x, y);
 }