]> git.saurik.com Git - wxWidgets.git/commitdiff
Not all implementations of wxMDIChildFrame derive from wxFrame
authorJulian Smart <julian@anthemion.co.uk>
Sun, 3 Apr 2005 09:24:04 +0000 (09:24 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Sun, 3 Apr 2005 09:24:04 +0000 (09:24 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33298 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/xrc/xh_mdi.h
src/xrc/xh_mdi.cpp

index 7d5d8809cea45122a0485b8b012cb7665f666062..f17d8e92947829746556a190eda0d90892c35824 100644 (file)
@@ -19,7 +19,7 @@
 
 #if wxUSE_MDI
 
-class WXDLLIMPEXP_CORE wxFrame;
+class WXDLLIMPEXP_CORE wxWindow;
 
 class WXDLLIMPEXP_XRC wxMdiXmlHandler : public wxXmlResourceHandler
 {
@@ -29,7 +29,7 @@ public:
     virtual bool CanHandle(wxXmlNode *node);
 
 private:
-    wxFrame *CreateFrame();
+    wxWindow *CreateFrame();
 
     DECLARE_DYNAMIC_CLASS(wxMdiXmlHandler)
 };
index a290dd923a66ce7f20fee877af3a08c2c1d715f8..21010352f700e1c97eb8c9f9010ea3cbf240d949 100644 (file)
@@ -62,13 +62,13 @@ wxMdiXmlHandler::wxMdiXmlHandler() : wxXmlResourceHandler()
     AddWindowStyles();
 }
 
-wxFrame *wxMdiXmlHandler::CreateFrame()
+wxWindow *wxMdiXmlHandler::CreateFrame()
 {
     if (m_class == wxT("wxMDIParentFrame"))
     {
         XRC_MAKE_INSTANCE(frame, wxMDIParentFrame);
 
-        frame->Create(m_parentAsWindow,
+        ((wxMDIParentFrame*)frame)->Create(m_parentAsWindow,
                       GetID(),
                       GetText(wxT("title")),
                       wxDefaultPosition, wxDefaultSize,
@@ -86,7 +86,7 @@ wxFrame *wxMdiXmlHandler::CreateFrame()
 
         XRC_MAKE_INSTANCE(frame, wxMDIChildFrame);
 
-        frame->Create(mdiParent,
+        ((wxMDIChildFrame*) frame)->Create(mdiParent,
                       GetID(),
                       GetText(wxT("title")),
                       wxDefaultPosition, wxDefaultSize,
@@ -99,14 +99,17 @@ wxFrame *wxMdiXmlHandler::CreateFrame()
 
 wxObject *wxMdiXmlHandler::DoCreateResource()
 {
-    wxFrame *frame = CreateFrame();
+    wxWindow *frame = CreateFrame();
 
     if (HasParam(wxT("size")))
         frame->SetClientSize(GetSize());
     if (HasParam(wxT("pos")))
         frame->Move(GetPosition());
-    if (HasParam(wxT("icon")))
-        frame->SetIcon(GetIcon(wxT("icon"), wxART_FRAME_ICON));
+    if (HasParam(wxT("icon")) && frame->IsKindOf(CLASSINFO(wxFrame)))
+    {
+        wxFrame* f = wxDynamicCast(f, wxFrame);
+        f->SetIcon(GetIcon(wxT("icon"), wxART_FRAME_ICON));
+    }
 
     SetupWindow(frame);