]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/m_links.cpp
capture mouse to be notified when it exists the popup rect (bug 1372228)
[wxWidgets.git] / src / html / m_links.cpp
index c3220d063bb216aad0d94ef86c523fd7c5d5665a..ee764370849128ea3beac9b237647e4106a685b3 100644 (file)
@@ -1,30 +1,23 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        m_links.cpp
+// Name:        src/html/m_links.cpp
 // Purpose:     wxHtml module for links & anchors
 // Author:      Vaclav Slavik
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vaclav Slavik
-// Licence:     wxWindows Licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
 #include "wx/wxprec.h"
 
-#include "wx/defs.h"
-#if wxUSE_HTML
-
-#ifdef __BORDLANDC__
-#pragma hdrstop
+#ifdef __BORLANDC__
+    #pragma hdrstop
 #endif
 
+#if wxUSE_HTML && wxUSE_STREAMS
+
 #ifndef WXPRECOMP
-#include "wx/wx.h"
 #endif
 
-
 #include "wx/html/forcelnk.h"
 #include "wx/html/m_templ.h"
 
@@ -34,52 +27,70 @@ FORCE_LINK_ME(m_links)
 
 class wxHtmlAnchorCell : public wxHtmlCell
 {
-    private:
-        wxString m_AnchorName;
-
-    public:
-        wxHtmlAnchorCell(const wxString& name) : wxHtmlCell() {m_AnchorName = name;}
-        virtual const wxHtmlCell* Find(int condition, const void* param) const
+private:
+    wxString m_AnchorName;
+
+public:
+    wxHtmlAnchorCell(const wxString& name) : wxHtmlCell()
+        { m_AnchorName = name; }
+    void Draw(wxDC& WXUNUSED(dc),
+              int WXUNUSED(x), int WXUNUSED(y),
+              int WXUNUSED(view_y1), int WXUNUSED(view_y2),
+              wxHtmlRenderingInfo& WXUNUSED(info)) {}
+
+    virtual const wxHtmlCell* Find(int condition, const void* param) const
+    {
+        if ((condition == wxHTML_COND_ISANCHOR) &&
+            (m_AnchorName == (*((const wxString*)param))))
         {
-            if ((condition == wxHTML_COND_ISANCHOR) && (m_AnchorName == (*((const wxString*)param))))
-                return this;
-            else
-                return wxHtmlCell::Find(condition, param);
+            return this;
         }
+        else
+        {
+            return wxHtmlCell::Find(condition, param);
+        }
+    }
+
+    DECLARE_NO_COPY_CLASS(wxHtmlAnchorCell)
 };
 
 
 
 TAG_HANDLER_BEGIN(A, "A")
+    TAG_HANDLER_CONSTR(A) { }
 
     TAG_HANDLER_PROC(tag)
     {
-        if (tag.HasParam("NAME")) {
-            m_WParser -> GetContainer() -> InsertCell(new wxHtmlAnchorCell(tag.GetParam("NAME")));
+        if (tag.HasParam( wxT("NAME") ))
+        {
+            m_WParser->GetContainer()->InsertCell(new wxHtmlAnchorCell(tag.GetParam( wxT("NAME") )));
         }
 
-        if (tag.HasParam("HREF")) {
-            wxString oldlnk = m_WParser -> GetLink();
-            wxColour oldclr = m_WParser -> GetActualColor();
-            int oldund = m_WParser -> GetFontUnderlined();
-
-            m_WParser -> SetActualColor(m_WParser -> GetLinkColor());
-            m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(m_WParser -> GetLinkColor()));
-            m_WParser -> SetFontUnderlined(TRUE);
-            m_WParser -> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser -> CreateCurrentFont()));
-            m_WParser -> SetLink(tag.GetParam("HREF"));
+        if (tag.HasParam( wxT("HREF") ))
+        {
+            wxHtmlLinkInfo oldlnk = m_WParser->GetLink();
+            wxColour oldclr = m_WParser->GetActualColor();
+            int oldund = m_WParser->GetFontUnderlined();
+            wxString name(tag.GetParam( wxT("HREF") )), target;
+
+            if (tag.HasParam( wxT("TARGET") )) target = tag.GetParam( wxT("TARGET") );
+            m_WParser->SetActualColor(m_WParser->GetLinkColor());
+            m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(m_WParser->GetLinkColor()));
+            m_WParser->SetFontUnderlined(true);
+            m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+            m_WParser->SetLink(wxHtmlLinkInfo(name, target));
 
             ParseInner(tag);
 
-            m_WParser -> SetLink(oldlnk);
-            m_WParser -> SetFontUnderlined(oldund);
-            m_WParser -> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser -> CreateCurrentFont()));
-            m_WParser -> SetActualColor(oldclr);
-            m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(oldclr));
+            m_WParser->SetLink(oldlnk);
+            m_WParser->SetFontUnderlined(oldund);
+            m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+            m_WParser->SetActualColor(oldclr);
+            m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr));
 
-            return TRUE;
+            return true;
         }
-        else return FALSE;
+        else return false;
     }
 
 TAG_HANDLER_END(A)