]> git.saurik.com Git - wxWidgets.git/commitdiff
Store a pointer to each ClassFactory so we can correctly release it when the browser...
authorSteve Lamerton <steve.lamerton@gmail.com>
Wed, 5 Oct 2011 17:23:51 +0000 (17:23 +0000)
committerSteve Lamerton <steve.lamerton@gmail.com>
Wed, 5 Oct 2011 17:23:51 +0000 (17:23 +0000)
See #13500

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69314 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/webview_ie.h
include/wx/webview.h
src/msw/webview_ie.cpp

index 407174b0e5efad39665503c062253fc0e323dcb5..a3ff0b7837df2939486d5b1719a52e3085f0dc28 100644 (file)
@@ -24,6 +24,7 @@
 
 struct IHTMLDocument2;
 class wxFSFile;
+class ClassFactory;
 
 class WXDLLIMPEXP_WEBVIEW wxWebViewIE : public wxWebView
 {
@@ -42,6 +43,8 @@ public:
        Create(parent, id, url, pos, size, style, name);
    }
 
+    ~wxWebViewIE();
+
     bool Create(wxWindow* parent,
            wxWindowID id,
            const wxString& url = wxWebViewDefaultURLStr,
@@ -149,6 +152,7 @@ private:
     //an item from the history. The position is stored as an int, and reflects
     //where we are in the history list.
     wxVector<wxSharedPtr<wxWebViewHistoryItem> > m_historyList;
+    wxVector<ClassFactory*> m_factories;
     int m_historyPosition;
     bool m_historyLoadingFromList;
     bool m_historyEnabled;
index a58fd87f979aec202adba6d8c843f199f892363c..662162dfec4fc46deb0e48f83675b13b0e667d79 100644 (file)
@@ -87,6 +87,7 @@ extern WXDLLIMPEXP_DATA_WEBVIEW(const char) wxWebViewDefaultURLStr[];
 class WXDLLIMPEXP_WEBVIEW wxWebView : public wxControl
 {
 public:
+    virtual ~wxWebView() {}
 
     virtual bool Create(wxWindow* parent,
            wxWindowID id,
index 8374dc87b87588e4b9d4d8629f4185350b548ee6..c118ac694173b8a3fa57b49adc56e8d22ac7b11c 100644 (file)
@@ -77,6 +77,13 @@ bool wxWebViewIE::Create(wxWindow* parent,
     return true;
 }
 
+wxWebViewIE::~wxWebViewIE()
+{
+    for(unsigned int i = 0; i < m_factories.size(); i++)
+    {
+        m_factories[i]->Release();
+    }
+}
 
 void wxWebViewIE::LoadURL(const wxString& url)
 {
@@ -684,6 +691,7 @@ void wxWebViewIE::RegisterHandler(wxSharedPtr<wxWebViewHandler> handler)
         {
             wxFAIL_MSG("Could not register protocol");
         }
+        m_factories.push_back(cf);
     }
     else
     {