X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8cf73271dd6f442a98e86b559d4a55c37e25b99f..7a04b644092ff91f8f2c6ecdd191e96285d39a1d:/include/wx/mac/carbon/mdi.h?ds=sidebyside diff --git a/include/wx/mac/carbon/mdi.h b/include/wx/mac/carbon/mdi.h index 1114ee525d..39319b262b 100644 --- a/include/wx/mac/carbon/mdi.h +++ b/include/wx/mac/carbon/mdi.h @@ -14,37 +14,33 @@ #ifndef _WX_MDI_H_ #define _WX_MDI_H_ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "mdi.h" -#endif - #include "wx/frame.h" -WXDLLEXPORT_DATA(extern const wxChar*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const wxChar*) wxStatusLineNameStr; +WXDLLIMPEXP_DATA_CORE(extern const char) wxStatusLineNameStr[]; -class WXDLLEXPORT wxMDIClientWindow; -class WXDLLEXPORT wxMDIChildFrame; +class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow; +class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame; -class WXDLLEXPORT wxMDIParentFrame: public wxFrame +class WXDLLIMPEXP_CORE wxMDIParentFrame: public wxFrame { DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) public: - wxMDIParentFrame(); - inline wxMDIParentFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, // Scrolling refers to client window - const wxString& name = wxFrameNameStr) + wxMDIParentFrame() { Init(); } + wxMDIParentFrame(wxWindow *parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, // Scrolling refers to client window + const wxString& name = wxFrameNameStr) { + Init(); Create(parent, id, title, pos, size, style, name); } - ~wxMDIParentFrame(); + virtual ~wxMDIParentFrame(); bool Create(wxWindow *parent, wxWindowID id, @@ -57,7 +53,7 @@ public: // Mac OS activate event virtual void MacActivate(long timestamp, bool activating); - // wxWindows activate event + // wxWidgets activate event void OnActivate(wxActivateEvent& event); void OnSysColourChanged(wxSysColourChangedEvent& event); @@ -68,6 +64,8 @@ public: // Get the client window inline wxMDIClientWindow *GetClientWindow() const { return m_clientWindow; }; + // Get rect to be used to center top-level children + virtual void GetRectForTopLevelChildren(int *x, int *y, int *w, int *h); // Create the client window class (don't Create the window, // just return a new class) @@ -75,27 +73,44 @@ public: // MDI operations virtual void Cascade(); - virtual void Tile(); + virtual void Tile(wxOrientation WXUNUSED(orient) = wxHORIZONTAL); virtual void ArrangeIcons(); virtual void ActivateNext(); virtual void ActivatePrevious(); + virtual bool Show( bool show = true ); + + // overridden base clas virtuals + virtual void AddChild(wxWindowBase *child); + virtual void RemoveChild(wxWindowBase *child); + protected: + // common part of all ctors + void Init(); + + // returns true if this frame has some contents and so should be visible, + // false if it's used solely as container for its children + bool ShouldBeVisible() const; - // TODO maybe have this member - wxMDIClientWindow *m_clientWindow; - wxMDIChildFrame * m_currentChild; - wxMenu* m_windowMenu; - // TRUE if MDI Frame is intercepting commands, not child + // TODO maybe have this member + wxMDIClientWindow *m_clientWindow; + wxMDIChildFrame *m_currentChild; + wxMenu *m_windowMenu; + + // true if MDI Frame is intercepting commands, not child bool m_parentFrameActive; + // true if the frame should be shown but is not because it is empty and + // useless otherwise than a container for its children + bool m_shouldBeShown; + private: - friend class WXDLLEXPORT wxMDIChildFrame; -DECLARE_EVENT_TABLE() + friend class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame; + DECLARE_EVENT_TABLE() }; -class WXDLLEXPORT wxMDIChildFrame: public wxFrame +class WXDLLIMPEXP_CORE wxMDIChildFrame: public wxFrame { DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) public: @@ -113,7 +128,7 @@ public: Create(parent, id, title, pos, size, style, name); } - ~wxMDIChildFrame(); + virtual ~wxMDIChildFrame(); bool Create(wxMDIParentFrame *parent, wxWindowID id, @@ -147,7 +162,7 @@ protected: * of the children. Phew! So the children are sort of 'adopted'... */ -class WXDLLEXPORT wxMDIClientWindow: public wxWindow +class WXDLLIMPEXP_CORE wxMDIClientWindow: public wxWindow { DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) public: @@ -158,20 +173,19 @@ class WXDLLEXPORT wxMDIClientWindow: public wxWindow CreateClient(parent, style); } - ~wxMDIClientWindow(); + virtual ~wxMDIClientWindow(); // Note: this is virtual, to allow overridden behaviour. virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL); - // Gets the size available for subwindows after menu size, toolbar size - // and status bar size have been subtracted. If you want to manage your own - // toolbar(s), don't call SetToolBar. - void DoGetClientSize(int *width, int *height) const; - // Explicitly call default scroll behaviour void OnScroll(wxScrollEvent& event); protected: + // Gets the size available for subwindows after menu size, toolbar size + // and status bar size have been subtracted. If you want to manage your own + // toolbar(s), don't call SetToolBar. + void DoGetClientSize(int *width, int *height) const; DECLARE_EVENT_TABLE() };