]> git.saurik.com Git - wxWidgets.git/commitdiff
Send full url to wxHtmlWindow::OnOpeningURL validation (and therefore use wxURL to...
authorWłodzimierz Skiba <abx@abx.art.pl>
Thu, 16 Dec 2004 20:32:43 +0000 (20:32 +0000)
committerWłodzimierz Skiba <abx@abx.art.pl>
Thu, 16 Dec 2004 20:32:43 +0000 (20:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31033 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

21 files changed:
contrib/samples/gizmos/dynsash/dynsash.bkl
contrib/samples/ogl/studio/studio.bkl
contrib/utils/wxrcedit/wxrcedit.bkl
demos/dbbrowse/dbbrowse.bkl
demos/forty/forty.bkl
demos/poem/poem.bkl
samples/help/help.bkl
samples/htlbox/htlbox.bkl
samples/html/about/about.bkl
samples/html/help/help.bkl
samples/html/helpview/helpview.bkl
samples/html/printing/printing.bkl
samples/html/test/test.cpp
samples/html/virtual/virtual.bkl
samples/html/widget/widget.bkl
samples/html/zip/zip.bkl
samples/xrc/xrcdemo.bkl
src/html/winpars.cpp
utils/configtool/src/configtool.bkl
utils/hhp2cached/hhp2cached.bkl
utils/tex2rtf/src/tex2rtf.bkl

index 640ba00078fa377da87784ccba580b4179a1eb16..ab6cddf118d01216032412a0a4a6b0699028e3b5 100644 (file)
@@ -11,6 +11,7 @@
         <wx-lib>gizmos</wx-lib>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
     </exe>
 
index 7f8acf13a5c0150bc2a1408d6fe212637a148c35..48a1737a6333ac0fd013e3c7fc4997f5d3efbaa2 100644 (file)
@@ -23,6 +23,7 @@
         <wx-lib>adv</wx-lib>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>studio.rc</win32-res>
     </exe>
index 804ac66a577cb1938e9db7b97e02a9035aaa49ac..cd1d2f0572d815e1bdff69d998017c65c04749ae 100644 (file)
@@ -23,6 +23,7 @@
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
         <wx-lib>xml</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>wxrcedit.rc</win32-res>
         <ldlibs>$(EXTRALIBS_XML)</ldlibs>
index e00c06a951ede7980fa6db4d961fa5192cc95d34..53ea35bf668f23c07c0e358e98b4c463ab54e85e 100644 (file)
@@ -19,6 +19,7 @@
         <wx-lib>odbc</wx-lib>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>dbbrowse.rc</win32-res>
     </exe>
index 3296588c40e9df2819d20dbdc0ac21efffa5390a..cc5ac9a99ae0060c930d4ce77b5e22222558d6fb 100644 (file)
@@ -17,6 +17,7 @@
         <wx-lib>html</wx-lib>
         <wx-lib>adv</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>forty.rc</win32-res>
     </exe>
index 546b1165e11a316da923b89ae38e3fb3296220c0..8143cf0b69120b947ed19ed5df931a10403ce202 100644 (file)
@@ -7,6 +7,7 @@
         <sources>wxpoem.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>wxpoem.rc</win32-res>
     </exe>
index fa1211240331ef804162a300b685ee07a318e039..edb5d35d4db81bc61b798cb3027aba717a3038ee 100644 (file)
@@ -7,6 +7,7 @@
         <sources>demo.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>demo.rc</win32-res>
     </exe>
index 3105bc4d6b318c4c4ab8606e2498cd98300ca002..5c417b995c6f1df32c47a8f4ae5fb40d43242f58 100644 (file)
@@ -7,6 +7,7 @@
         <sources>htlbox.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>htlbox.rc</win32-res>
     </exe>
index 473530efeead0132e46def1b84ee0287c0fe683d..11b5b7fff972eb1e9d97d9647003f8d9b362bfe6 100644 (file)
@@ -9,6 +9,7 @@
         <sources>about.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>about.rc</win32-res>
     </exe>
index 6bc0a74eb0ea3f8cf5c1f5b4b538d60d1c33889d..771ea1978a7d00c8233f691ba97638cff85d8fda 100644 (file)
@@ -9,6 +9,7 @@
         <sources>help.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>help.rc</win32-res>
     </exe>
index a04699656e95758a4487d20258b9054ba2c99414..5edc6d4d36342f8ac1133b76f8b7ccad398535dc 100644 (file)
@@ -9,6 +9,7 @@
         <sources>helpview.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>helpview.rc</win32-res>
     </exe>
index 37e7f0ad1952048d9ed2901925939ae1c9214075..5115f0f724ffe014cf1aee10a31a039ae097c446 100644 (file)
@@ -9,6 +9,7 @@
         <sources>printing.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <wx-lib>adv</wx-lib>
         <win32-res>printing.rc</win32-res>
index 50e10402e4fbeb1547993d54b6ec46d5d5d4df17..d3efde3d9e9e20c719c5c63b69b729396365fde8 100644 (file)
@@ -44,6 +44,20 @@ public:
     virtual bool OnInit();
 };
 
+// Define a new html window type: this is a wrapper for handling wxHtmlWindow events
+class MyHtmlWindow : public wxHtmlWindow
+{
+public:
+    MyHtmlWindow(wxWindow *parent) : wxHtmlWindow( parent ) { }
+
+    virtual wxHtmlOpeningStatus OnOpeningURL(wxHtmlURLType WXUNUSED(type),
+                                             const wxString& WXUNUSED(url),
+                                             wxString *WXUNUSED(redirect)) const;
+
+private:
+    DECLARE_NO_COPY_CLASS(MyHtmlWindow)
+};
+
 // Define a new frame type: this is going to be our main frame
 class MyFrame : public wxFrame
 {
@@ -59,7 +73,7 @@ public:
     void OnProcessor(wxCommandEvent& event);
 
 private:
-    wxHtmlWindow *m_Html;
+    MyHtmlWindow *m_Html;
     wxHtmlProcessor *m_Processor;
 
     // Any class wishing to process wxWidgets events must use this macro
@@ -185,12 +199,12 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
 #endif // wxUSE_ACCEL
 
 #if wxUSE_STATUSBAR
-    CreateStatusBar(1);
+    CreateStatusBar(2);
 #endif // wxUSE_STATUSBAR
 
     m_Processor = new BoldProcessor;
     m_Processor->Enable(false);
-    m_Html = new wxHtmlWindow(this);
+    m_Html = new MyHtmlWindow(this);
     m_Html->SetRelatedFrame(this, _("HTML : %s"));
 #if wxUSE_STATUSBAR
     m_Html->SetRelatedStatusBar(0);
@@ -242,3 +256,11 @@ void MyFrame::OnProcessor(wxCommandEvent& WXUNUSED(event))
     m_Processor->Enable(!m_Processor->IsEnabled());
     m_Html->LoadPage(m_Html->GetOpenedPage());
 }
+
+wxHtmlOpeningStatus MyHtmlWindow::OnOpeningURL(wxHtmlURLType WXUNUSED(type),
+                                               const wxString& url,
+                                               wxString *WXUNUSED(redirect)) const
+{
+    GetRelatedFrame()->SetStatusText(url + _T(" lately opened"),1);
+    return wxHTML_OPEN;
+}
index 10c045e6a605c1534524b0b2bad7f98158fd9742..fc8ea5eca01a84ee1da2214c4fa154f474f3b434 100644 (file)
@@ -9,6 +9,7 @@
         <sources>virtual.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>virtual.rc</win32-res>
     </exe>
index 82e8e709caeffe7e02cc1e3dfbe223ab47bb5e87..bba4e6319de285f2f2b9079c78f562bb86b6bdc4 100644 (file)
@@ -9,6 +9,7 @@
         <sources>widget.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>widget.rc</win32-res>
     </exe>
index dbf4125afd5a38d794dd3afcb5ea07742de77603..c5d40d27563b7ef419843b2cfea1579aabb8ba7e 100644 (file)
@@ -9,6 +9,7 @@
         <sources>zip.cpp</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>zip.rc</win32-res>
     </exe>
index 0d008d4951157e61b56b997762a51fc9818cdf39..a2497944d42579b71f61432b0d80dc4d2a60597f 100644 (file)
@@ -15,6 +15,7 @@
         <wx-lib>adv</wx-lib>
         <wx-lib>core</wx-lib>
         <wx-lib>xml</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <win32-res>xrcdemo.rc</win32-res>
     </exe>
index 344ade10a068675909a474d5c3d7fe1cbcc35a7a..ff3f4ea0bd1fbf6c09f4f68f8a50beac9c9b0ad3 100644 (file)
@@ -32,6 +32,7 @@
 #include "wx/fontmap.h"
 #include "wx/log.h"
 #include "wx/settings.h"
+#include "wx/url.h"
 
 
 //-----------------------------------------------------------------------------
@@ -248,16 +249,47 @@ wxObject* wxHtmlWinParser::GetProduct()
 wxFSFile *wxHtmlWinParser::OpenURL(wxHtmlURLType type,
                                    const wxString& url) const
 {
-    // FIXME - normalize the URL to full path before passing to
-    //         OnOpeningURL!!
     if ( m_Window )
     {
         wxString myurl(url);
         wxHtmlOpeningStatus status;
         for (;;)
         {
+            wxString myfullurl(myurl);
+
+#if wxUSE_URL
+            // consider url as absolute path first
+            wxURL current(wxURL::Unescape(myurl));
+            myfullurl = current.GetURL();
+
+            // if not absolute then ...
+            if( current.IsReference() )
+            {
+                wxString basepath = GetFS()->GetPath();
+                wxURI base(wxURL::Unescape(basepath));
+
+                // try to apply base path if valid ...
+                if( !base.IsReference() )
+                {
+                    wxURI path(myfullurl);
+                    path.Resolve( base );
+                    myfullurl = path.BuildURI();
+                }
+                else
+                {
+                    // ... or force such addition if not included already
+                    if( !current.GetURL().Contains(basepath) )
+                    {
+                        basepath += myurl;
+                        wxURL connected( wxURL::Unescape(basepath) );
+                        myfullurl = connected.GetURL();
+                    }
+                }
+            }
+#endif
+
             wxString redirect;
-            status = m_Window->OnOpeningURL(type, myurl, &redirect);
+            status = m_Window->OnOpeningURL(type, myfullurl, &redirect);
             if ( status != wxHTML_REDIRECT )
                 break;
 
index efc0c5b0395a8a85f1a2a2df3a65f51dcaae8797..fcc06aaa7855b5d67c7ced4d07c5b4f6c896e75c 100644 (file)
@@ -27,6 +27,7 @@
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
         <wx-lib>xml</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
     </exe>
 
index 388ecbd517486c91bf8fcdc830cdcdae1992cb89..5535d6a251608114c7b4375eba8c5c3b6ffb2bb9 100644 (file)
@@ -12,6 +12,7 @@
         <win32-res>hhp2cached.rc</win32-res>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <install-to>$(BINDIR)</install-to>
     </exe>
index 50c86a4392c2b6a5678c869e50d7fb1d131e1521..e433ca26c27dc745b4eb42e266af5e1ebe1dab00 100644 (file)
@@ -30,6 +30,7 @@
         <sources>$(TEX2RTF_SRC)</sources>
         <wx-lib>html</wx-lib>
         <wx-lib>core</wx-lib>
+        <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         <install-to>$(BINDIR)</install-to>
     </exe>