]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied patch [ 597398 ] Generic MDI, wxNotebook based.
authorJulian Smart <julian@anthemion.co.uk>
Tue, 20 Aug 2002 09:09:55 +0000 (09:09 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Tue, 20 Aug 2002 09:09:55 +0000 (09:09 +0000)
By Hans Van Leemputten (hansvl)

- This patch implements a generic notebook based mdi,
due to that wxMDIChildFrame could not derive from
wxFrame some things in the samples and in the docmdi
classes needed to be adjusted... basically this comes
down to not do (wxFrame *) but instead do
(wxMDIChildFrame *), or store a pointer to the frame in a
wxWindow* instead of a wxFrame variable...

- The main reason wxMDIChildFrame cannot derive from
wxFrame is that it would take to much platform specific
functions to be overwritten (= lot of ifdef's). This then
couldn't be called generic anymore, so that's why we
need to derive from wxPanel...

- Tested on/with:
1. wxMSW (I disabled the MSW MDI implementation to
be able to test it), tested it with the MDI sample,
docvwmdi sample and docview sample and also tested it
with wxWorkshop. (test = compile and run)
2. wxX11, tested with the same set wxWin samples as
the wxMSW test. I also compiled wxWorkshop with it,
but could not run wxWorkshop due to some issue not
related to the MDI implementation.

- How to apply:
* Apply the patch
* move mdig.cpp into wxWindows/src/generic/
* move mdig.h into wxWindows/include/wx/generic/

- Some extra things that still need to be done:
* File lists, project files should be updated to include
mdig.cpp (the patch only change this on wxX11)
* The configuration script should be updated.
* Maybe wxUSE_GENERIC_MDI_ARCHITECTURE also
should be added so it is only included when wanted...

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

17 files changed:
configure.in
distrib/msw/cw.rsp
distrib/msw/mac.rsp
distrib/msw/tmake/filelist.txt
docs/msw/install.txt
include/wx/docmdi.h
include/wx/docview.h
include/wx/mdi.h
samples/docvwmdi/docview.cpp
samples/docvwmdi/docview.h
samples/docvwmdi/view.cpp
samples/docvwmdi/view.h
samples/mdi/mdi.cpp
src/msw/joystick.cpp
src/msw/mdi.cpp
src/wxUniv.dsp
src/x11/files.lst

index e82e69e7df5d8b9d84f368c37e768058b8137f23..0b9cf15826496985a79112c46b511f3ad75b690c 100644 (file)
@@ -4228,15 +4228,17 @@ if test "$wxUSE_CONSTRAINTS" = "yes"; then
 fi
 
 if test "$wxUSE_MDI_ARCHITECTURE" = "yes"; then
-    if test "$wxUSE_UNIVERSAL" = "yes"; then
-        AC_MSG_WARN(MDI not yet supported for wxUniversal... disabled)
-        wxUSE_MDI_ARCHITECTURE=no
-    fi
 
-    if test "$wxUSE_MDI_ARCHITECTURE" = "yes"; then
-        AC_DEFINE(wxUSE_MDI_ARCHITECTURE)
-        SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS mdi"
-    fi
+dnl     There is now experimental generic MDI support 
+dnl     if test "$wxUSE_UNIVERSAL" = "yes"; then
+dnl         AC_MSG_WARN(MDI not yet supported for wxUniversal... disabled)
+dnl         wxUSE_MDI_ARCHITECTURE=no
+dnl     fi
+
+   if test "$wxUSE_MDI_ARCHITECTURE" = "yes"; then
+       AC_DEFINE(wxUSE_MDI_ARCHITECTURE)
+       SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS mdi"
+   fi
 fi
 
 if test "$wxUSE_DOC_VIEW_ARCHITECTURE" = "yes" ; then
index 0493ffe4397ccccd7083932c347ba11e29119f56..02f62f771ce41f97e4e434add0791963ed09956c 100644 (file)
@@ -1,7 +1,4 @@
-include/wx_cw.pch
-include/wx_cw.pch++
-include/wx_cw_d.pch
-include/wx_cw_d.pch++
+include/wx*.pch*
 
 include/wx/wx_cw.h
 include/wx/wx_cw_d.h
index 642e12f84e2f734d9d8cf8f143fe14c30b33034c..9e26848b76041e14286cb0a39e8d4ec956a16b1b 100644 (file)
@@ -44,5 +44,6 @@ src/mac/macsock/*.lib
 src/mac/morefile/*.h
 src/mac/morefile/*.cpp
 
+include/wx_pb.h
 include/wx/mac/*.h
 
index c63602233d697bb08d9ebaf0e4b3e90335c4d9d0..d98e4575fc3f6920a3830636c2dd5047a2bc7441 100644 (file)
@@ -90,6 +90,7 @@ imaglist.cpp  Generic NotWin32
 laywin.cpp     Generic
 listctrl.cpp   Generic NotWin32
 logg.cpp       Generic
+mdig.cpp       Generic NotWin32,NotGTK,NotOS2,NotMac
 msgdlgg.cpp    Generic Generic
 notebook.cpp   Generic NotWin32,NotGTK,NotOS2,NotMGL,NotX11,NotMac,NotMicro
 numdlgg.cpp    Generic
@@ -1483,6 +1484,7 @@ helphtml.h        GenericH
 imaglist.h     GenericH
 laywin.h       GenericH
 listctrl.h     GenericH        NotWin32
+mdig.cpp       GenericH        NotWin32,NotGTK,NotOS2,NotMac
 msgdlgg.h      GenericH
 notebook.h     GenericH
 paletteg.h     GenericH        NotMSW,NotX,NotX11,NotOS2
index 974f37312d11f618a92998fb32fb06e280a53dff..33edeefe0eaedde0fbc0e6e023f2229856b3f417 100644 (file)
@@ -29,8 +29,8 @@ program contains the following:
 - All common, generic and MSW-specific wxWindows source;
 - samples;
 - documentation in Windows Help format;
-- makefiles for most Windows compilers, plus BC++ and
-  VC++ IDE files;
+- makefiles for most Windows compilers, plus CodeWarrior,
+  BC++ and VC++ IDE files;
 - JPEG library source;
 - TIFF library source;
 - Object Graphics Library;
index 1e3047bdd8bd77196fc900607a0151da9e3e3180..f4922834d8defd3a4aade7bf31aa2cbd74534251 100644 (file)
@@ -75,7 +75,7 @@ class WXDLLEXPORT wxDocMDIChildFrame: public wxMDIChildFrame
   inline wxView *GetView(void) const { return m_childView; }
   inline void SetDocument(wxDocument *doc) { m_childDocument = doc; }
   inline void SetView(wxView *view) { m_childView = view; }
-  bool Destroy() { m_childView = (wxView *)NULL; return wxFrame::Destroy(); }
+  bool Destroy() { m_childView = (wxView *)NULL; return wxMDIChildFrame::Destroy(); }
  protected:
   wxDocument*       m_childDocument;
   wxView*           m_childView;
index 0fc38cf3d5988af1bab8f5b536b0726dcc89158f..9ffe9542467d6bdf5e471183c3f52ecdd95a7595 100644 (file)
@@ -177,8 +177,8 @@ public:
     wxString GetViewName() const { return m_viewTypeName; }
     void SetViewName(const wxString& name) { m_viewTypeName = name; };
 
-    wxFrame *GetFrame() const { return m_viewFrame ; }
-    void SetFrame(wxFrame *frame) { m_viewFrame = frame; }
+    wxWindow *GetFrame() const { return m_viewFrame ; }
+    void SetFrame(wxWindow *frame) { m_viewFrame = frame; }
 
     virtual void OnActivateView(bool activate, wxView *activeView, wxView *deactiveView);
     virtual void OnDraw(wxDC *dc) = 0;
@@ -221,7 +221,7 @@ public:
 protected:
     wxDocument*       m_viewDocument;
     wxString          m_viewTypeName;
-    wxFrame*          m_viewFrame;
+    wxWindow*         m_viewFrame;
 };
 
 // Represents user interface (and other) properties of documents and views
index 2eae5377914b2897b608f4656805acca6f26865f..0fc75128ff5b88ddd88a72cd408b76048864707f 100644 (file)
@@ -1,7 +1,9 @@
 #ifndef _WX_MDI_H_BASE_
 #define _WX_MDI_H_BASE_
 
-#if defined(__WXMSW__)
+#if defined(__WXUNIVERSAL__)
+#include "wx/generic/mdig.h"
+#elif defined(__WXMSW__)
 #include "wx/msw/mdi.h"
 #elif defined(__WXMOTIF__)
 #include "wx/motif/mdi.h"
index a0cee0503785d525cbbe9a0eb7889d14079e8936..69ce099317e6715b423a7643cd06ab2b05542e5f 100644 (file)
@@ -208,7 +208,7 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
 
 // Creates a canvas. Called from view.cpp when a new drawing
 // view is created.
-MyCanvas *MyFrame::CreateCanvas(wxView *view, wxFrame *parent)
+MyCanvas *MyFrame::CreateCanvas(wxView *view, wxMDIChildFrame *parent)
 {
   int width, height;
   parent->GetClientSize(&width, &height);
index 3d0ad4274d3c85ddb937ea403150b486e2c9e673..2674c6a36efb8fec384d44d3b837c2e2826e6f72 100644 (file)
@@ -16,6 +16,8 @@
 #ifndef __DOCVIEWSAMPLEH__
 #define __DOCVIEWSAMPLEH__
 
+#include "wx/mdi.h"
+#include "wx/docview.h"
 #include "wx/docmdi.h"
 
 class wxDocManager;
@@ -48,7 +50,7 @@ class MyFrame: public wxDocMDIParentFrame
     long type);
 
   void OnAbout(wxCommandEvent& event);
-  MyCanvas *CreateCanvas(wxView *view, wxFrame *parent);
+  MyCanvas *CreateCanvas(wxView *view, wxMDIChildFrame *parent);
 
 DECLARE_EVENT_TABLE()
 };
index d359871f4604a573311ddead609b1cbd9fc41f3a..2f873099a85c61e5f2438a37840dcc8b685a6ea2 100644 (file)
@@ -189,7 +189,7 @@ BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
 END_EVENT_TABLE()
 
 // Define a constructor for my canvas
-MyCanvas::MyCanvas(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, long style):
+MyCanvas::MyCanvas(wxView *v, wxMDIChildFrame *frame, const wxPoint& pos, const wxSize& size, long style):
  wxScrolledWindow(frame, -1, pos, size, style)
 {
   view = v;
@@ -256,7 +256,7 @@ void MyCanvas::OnMouseEvent(wxMouseEvent& event)
 }
 
 // Define a constructor for my text subwindow
-MyTextWindow::MyTextWindow(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, long style):
+MyTextWindow::MyTextWindow(wxView *v, wxMDIChildFrame *frame, const wxPoint& pos, const wxSize& size, long style):
  wxTextCtrl(frame, -1, "", pos, size, style)
 {
   view = v;
index 11f2ff6aedb12a229614bf1ac85e4bb2c597b841..3f62a604534a4af5aea01e711313d52cb9b598e3 100644 (file)
@@ -23,7 +23,7 @@ class MyCanvas: public wxScrolledWindow
 public:
     wxView *view;
     
-    MyCanvas(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, long style);
+    MyCanvas(wxView *v, wxMDIChildFrame *frame, const wxPoint& pos, const wxSize& size, long style);
     virtual void OnDraw(wxDC& dc);
     void OnMouseEvent(wxMouseEvent& event);
 
@@ -36,16 +36,16 @@ class MyTextWindow: public wxTextCtrl
 public:
     wxView *view;
     
-    MyTextWindow(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, long style);
+    MyTextWindow(wxView *v, wxMDIChildFrame *frame, const wxPoint& pos, const wxSize& size, long style);
 };
 
 class DrawingView: public wxView
 {
 public:
-    wxFrame *frame;
+    wxMDIChildFrame *frame;
     MyCanvas *canvas;
   
-    DrawingView() { canvas = (MyCanvas *) NULL; frame = (wxFrame *) NULL; }
+    DrawingView() { canvas = (MyCanvas *) NULL; frame = (wxMDIChildFrame *) NULL; }
     ~DrawingView() {}
 
     bool OnCreate(wxDocument *doc, long flags);
@@ -63,10 +63,10 @@ private:
 class TextEditView: public wxView
 {
 public:
-    wxFrame *frame;
+    wxMDIChildFrame *frame;
     MyTextWindow *textsw;
   
-    TextEditView(): wxView() { frame = (wxFrame *) NULL; textsw = (MyTextWindow *) NULL; }
+    TextEditView(): wxView() { frame = (wxMDIChildFrame *) NULL; textsw = (MyTextWindow *) NULL; }
     ~TextEditView() {}
 
     bool OnCreate(wxDocument *doc, long flags);
index 3721a03308577e309989caad85b500fc17eb4ea9..06b778e8e4984c6a26278d9cb39322936a40a964 100644 (file)
@@ -275,13 +275,15 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
     subframe->Show(TRUE);
 }
 
-void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event))
+void MyFrame::OnSize(wxSizeEvent& event)
 {
     int w, h;
     GetClientSize(&w, &h);
 
     textWindow->SetSize(0, 0, 200, h);
     GetClientWindow()->SetSize(200, 0, w - 200, h);
+    
+    event.Skip();
 }
 
 void MyFrame::InitToolBar(wxToolBar* toolBar)
index b8920854e6e1625284869f0c723279914196094c..0cd1a0307f52a2bdf524820b3f19c22c3aa541a6 100644 (file)
@@ -98,6 +98,7 @@ int wxJoystick::GetPOVPosition() const
 #ifndef NO_JOYGETPOSEX
     JOYINFOEX joyInfo;
     joyInfo.dwFlags = JOY_RETURNPOV;
+    joyInfo.dwSize = sizeof(joyInfo);
     MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
     if (res == JOYERR_NOERROR )
     {
@@ -115,6 +116,7 @@ int wxJoystick::GetPOVCTSPosition() const
 #ifndef NO_JOYGETPOSEX
     JOYINFOEX joyInfo;
     joyInfo.dwFlags = JOY_RETURNPOVCTS;
+    joyInfo.dwSize = sizeof(joyInfo);
     MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
     if (res == JOYERR_NOERROR )
     {
@@ -132,6 +134,7 @@ int wxJoystick::GetRudderPosition() const
 #ifndef NO_JOYGETPOSEX
     JOYINFOEX joyInfo;
     joyInfo.dwFlags = JOY_RETURNR;
+    joyInfo.dwSize = sizeof(joyInfo);
     MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
     if (res == JOYERR_NOERROR )
     {
@@ -149,6 +152,7 @@ int wxJoystick::GetUPosition() const
 #ifndef NO_JOYGETPOSEX
     JOYINFOEX joyInfo;
     joyInfo.dwFlags = JOY_RETURNU;
+    joyInfo.dwSize = sizeof(joyInfo);
     MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
     if (res == JOYERR_NOERROR )
     {
@@ -166,6 +170,7 @@ int wxJoystick::GetVPosition() const
 #ifndef NO_JOYGETPOSEX
     JOYINFOEX joyInfo;
     joyInfo.dwFlags = JOY_RETURNV;
+    joyInfo.dwSize = sizeof(joyInfo);
     MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
     if (res == JOYERR_NOERROR )
     {
index 611dbbe4aeb5d0505237bf99133cdd4954a98010..41e02c6b1be7917f66ae86cc48aa3c844367d17e 100644 (file)
@@ -43,6 +43,8 @@
     #include "wx/log.h"
 #endif
 
+#if wxUSE_MDI_ARCHITECTURE && !defined(__WXUNIVERSAL__)
+
 #include "wx/mdi.h"
 #include "wx/msw/private.h"
 
@@ -1387,3 +1389,7 @@ static void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam,
     *hwndDeact = (WXHWND)HIWORD(lParam);
 #endif // Win32/Win16
 }
+
+#endif
+// wxUSE_MDI_ARCHITECTURE && !defined(__WXUNIVERSAL__)
+
index 8f76e41b4074a7231f5da3609ee786515b15aab5..db54216826e7cb661960376e7f8fcf07ba050457 100644 (file)
@@ -703,6 +703,10 @@ SOURCE=.\generic\logg.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\generic\mdig.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\generic\msgdlgg.cpp
 # End Source File
 # Begin Source File
index 1c5a2a0bbc94d07696e531de5a933af102535a39..74ca34d4aceb1e29f90d5030723ca3a47d177b7f 100644 (file)
@@ -55,6 +55,7 @@ ALL_SOURCES = \
                generic/laywin.cpp \
                generic/listctrl.cpp \
                generic/logg.cpp \
+               generic/mdig.cpp \
                generic/msgdlgg.cpp \
                generic/numdlgg.cpp \
                generic/panelg.cpp \
@@ -573,6 +574,7 @@ ALL_HEADERS = \
                generic/imaglist.h \
                generic/laywin.h \
                generic/listctrl.h \
+               generic/mdig.h \
                generic/msgdlgg.h \
                generic/notebook.h \
                generic/paletteg.h \
@@ -806,6 +808,7 @@ GENERICOBJS = \
                laywin.o \
                listctrl.o \
                logg.o \
+               mdig.o \
                msgdlgg.o \
                numdlgg.o \
                panelg.o \