From 2d814c19cc7b8aa54ca452b14e6a99442361d7da Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Fri, 30 Apr 2004 22:44:03 +0000
Subject: [PATCH] use an internal wxFileSystem in wxHtmlListBox so that
 references to images  could be resolved

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27029 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/changes.txt           |  1 +
 docs/latex/wx/htmllbox.tex | 13 +++++++++++++
 include/wx/htmllbox.h      | 17 +++++++++++++++++
 src/generic/htmllbox.cpp   |  1 +
 4 files changed, 32 insertions(+)

diff --git a/docs/changes.txt b/docs/changes.txt
index 5aff49c6a3..53124c555c 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -112,6 +112,7 @@ All (GUI):
   min size using SetSizeHints, and calls to wxSizer::SetItemMinSize
   are also forwarded to SetSizeHints for window items.
 - added wxRegEx::GetMatchCount()
+- it is now possible to display images in wxHtmlListBox
 
 wxMSW:
 
diff --git a/docs/latex/wx/htmllbox.tex b/docs/latex/wx/htmllbox.tex
index 63729f5856..170f542d7a 100644
--- a/docs/latex/wx/htmllbox.tex
+++ b/docs/latex/wx/htmllbox.tex
@@ -63,6 +63,19 @@ wxListBox styles can not be used here.
 Returns {\tt true} on success or {\tt false} if the control couldn't be created
 
 
+\membersection{wxHtmlListBox::GetFileSystem}\label{wxhtmllistboxgetfilesystem}
+
+\func{wxFileSystem\&}{GetFileSystem}{\void}
+
+\constfunc{const wxFileSystem\&}{GetFileSystem}{\void}
+
+Returns the \helpref{wxFileSystem}{wxfilesystem} used by the HTML parser of
+this object. The file system object is used to resolve the paths in HTML
+fragments displayed in the control and you should use 
+\helpref{wxFileSystem::ChangePathTo}{wxfilesystemchangepathto} if you use
+relative paths for the images or other resources embedded in your HTML.
+
+
 \membersection{wxHtmlListBox::GetSelectedTextBgColour}\label{wxhtmllistboxgetselectedtextbgcolour}
 
 \constfunc{wxColour}{GetSelectedTextBgColour}{\param{const wxColour\& }{colBg}}
diff --git a/include/wx/htmllbox.h b/include/wx/htmllbox.h
index f61360bc53..48e944e1ef 100644
--- a/include/wx/htmllbox.h
+++ b/include/wx/htmllbox.h
@@ -14,6 +14,10 @@
 
 #include "wx/vlbox.h"               // base class
 
+#if wxUSE_FILESYSTEM
+    #include "wx/filesys.h"
+#endif // wxUSE_FILESYSTEM
+
 class WXDLLIMPEXP_HTML wxHtmlCell;
 class WXDLLIMPEXP_HTML wxHtmlWinParser;
 class WXDLLIMPEXP_HTML wxHtmlListBoxCache;
@@ -66,6 +70,14 @@ public:
     virtual void RefreshAll();
     virtual void SetItemCount(size_t count);
 
+
+#if wxUSE_FILESYSTEM
+    // retrieve the file system used by the wxHtmlWinParser: if you use
+    // relative paths in your HTML, you should use its ChangePathTo() method
+    wxFileSystem& GetFileSystem() { return m_filesystem; }
+    const wxFileSystem& GetFileSystem() const { return m_filesystem; }
+#endif // wxUSE_FILESYSTEM
+
 protected:
     // this method must be implemented in the derived class and should return
     // the body (i.e. without <html>) of the HTML for the given item
@@ -112,6 +124,11 @@ private:
     // HTML parser we use
     wxHtmlWinParser *m_htmlParser;
 
+#if wxUSE_FILESYSTEM
+    // file system used by m_htmlParser
+    wxFileSystem m_filesystem;
+#endif // wxUSE_FILESYSTEM
+
     // rendering style for the parser which allows us to customize our colours
     wxHtmlListBoxStyle *m_htmlRendStyle;
 
diff --git a/src/generic/htmllbox.cpp b/src/generic/htmllbox.cpp
index 91be6e7ac7..5cc120f75c 100644
--- a/src/generic/htmllbox.cpp
+++ b/src/generic/htmllbox.cpp
@@ -242,6 +242,7 @@ void wxHtmlListBox::CacheItem(size_t n) const
 
             self->m_htmlParser = new wxHtmlWinParser;
             m_htmlParser->SetDC(new wxClientDC(self));
+            m_htmlParser->SetFS(&self->m_filesystem);
         }
 
         wxHtmlContainerCell *cell = (wxHtmlContainerCell *)m_htmlParser->
-- 
2.47.2