X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1f0c8f31f407ecfce909060464c0ea655221cdab..47e175a24f862aa8b7ca7dd4a2bb5957991e7f2d:/src/osx/carbon/mdi.cpp diff --git a/src/osx/carbon/mdi.cpp b/src/osx/carbon/mdi.cpp index 02b33e5cf6..80f31dc379 100644 --- a/src/osx/carbon/mdi.cpp +++ b/src/osx/carbon/mdi.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/mac/carbon/mdi.cpp +// Name: src/osx/carbon/mdi.cpp // Purpose: MDI classes // Author: Stefan Csomor // Modified by: @@ -34,10 +34,6 @@ BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) END_EVENT_TABLE() -BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow) - EVT_SCROLL(wxMDIClientWindow::OnScroll) -END_EVENT_TABLE() - #define TRACE_MDI "mdi" static const int IDM_WINDOWTILEHOR = 4001; @@ -50,7 +46,7 @@ static const int IDM_WINDOWTILEVERT = 4005; void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) { -#if 1 // TODO REMOVE +#if wxOSX_USE_CARBON // TODO REMOVE if ( inWindowRef ) { // bool isHighlighted = IsWindowHighlited( inWindowRef ) ; @@ -74,6 +70,10 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) SetPort( port ) ; #endif } +#elif defined(wxOSX_USE_COCOA) + wxUnusedVar(inActivate); + wxUnusedVar(inWindowRef); +// TODO: implement me! #endif } @@ -83,15 +83,12 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) void wxMDIParentFrame::Init() { - m_clientWindow = NULL; - m_currentChild = NULL; - m_windowMenu = (wxMenu*) NULL; m_parentFrameActive = true; m_shouldBeShown = false; } bool wxMDIParentFrame::Create(wxWindow *parent, - wxWindowID id, + wxWindowID winid, const wxString& title, const wxPoint& pos, const wxSize& size, @@ -102,7 +99,7 @@ bool wxMDIParentFrame::Create(wxWindow *parent, // "Window" menu if ( style & wxFRAME_NO_WINDOW_MENU ) { - m_windowMenu = (wxMenu *)NULL; + m_windowMenu = NULL; style -= wxFRAME_NO_WINDOW_MENU ; } else // normal case: we have the window menu, so construct it @@ -117,14 +114,16 @@ bool wxMDIParentFrame::Create(wxWindow *parent, m_windowMenu->Append(IDM_WINDOWNEXT, wxT("&Next")); } - if ( !wxFrame::Create( parent , id , title , pos , size , style , name ) ) + if ( !wxFrame::Create( parent , winid , title , pos , size , style , name ) ) return false; m_parentFrameActive = true; m_clientWindow = OnCreateClient(); + if ( !m_clientWindow || !m_clientWindow->CreateClient(this, style) ) + return false; - return m_clientWindow != NULL; + return true; } wxMDIParentFrame::~wxMDIParentFrame() @@ -133,8 +132,6 @@ wxMDIParentFrame::~wxMDIParentFrame() // already deleted by DestroyChildren() m_clientWindow = NULL ; - - delete m_windowMenu; } void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) @@ -218,7 +215,7 @@ void wxMDIParentFrame::MacActivate(long timestamp, bool activating) { wxLogTrace(TRACE_MDI, wxT("child had been scheduled for deactivation, rehighlighting")); - UMAHighlightAndActivateWindow((WindowRef)s_macDeactivateWindow->MacGetWindowRef(), true); + UMAHighlightAndActivateWindow((WindowRef)s_macDeactivateWindow->GetWXWindow(), true); wxLogTrace(TRACE_MDI, wxT("finished highliting child")); @@ -252,7 +249,9 @@ void wxMDIParentFrame::MacActivate(long timestamp, bool activating) else // schedule ourselves for deactivation { if (s_macDeactivateWindow) + { wxLogTrace(TRACE_MDI, wxT("window=%p SHOULD have been deactivated, oh well!"), s_macDeactivateWindow); + } wxLogTrace(TRACE_MDI, wxT("Scheduling delayed MDI Parent deactivation")); s_macDeactivateWindow = this; @@ -265,19 +264,6 @@ void wxMDIParentFrame::OnActivate(wxActivateEvent& event) event.Skip(); } -// Returns the active MDI child window -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const -{ - return m_currentChild ; -} - -// Create the client window class (don't Create the window, -// just return a new class) -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() -{ - return new wxMDIClientWindow( this ); -} - // Responds to colour changes, and passes event on to children. void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) { @@ -287,32 +273,6 @@ void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) wxFrame::OnSysColourChanged(event); } -// MDI operations -void wxMDIParentFrame::Cascade() -{ - // TODO -} - -void wxMDIParentFrame::Tile(wxOrientation WXUNUSED(orient)) -{ - // TODO -} - -void wxMDIParentFrame::ArrangeIcons() -{ - // TODO -} - -void wxMDIParentFrame::ActivateNext() -{ - // TODO -} - -void wxMDIParentFrame::ActivatePrevious() -{ - // TODO -} - bool wxMDIParentFrame::ShouldBeVisible() const { for ( wxWindowList::compatibility_iterator node = GetChildren().GetFirst(); @@ -363,33 +323,27 @@ bool wxMDIParentFrame::Show( bool show ) // Child frame // ---------------------------------------------------------------------------- -wxMDIChildFrame::wxMDIChildFrame() -{ - Init() ; -} void wxMDIChildFrame::Init() { } bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, - wxWindowID id, + wxWindowID winid, const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { + m_mdiParent = parent; + SetName(name); - if ( id == wxID_ANY ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; + if ( winid == wxID_ANY ) + winid = (int)NewControlId(); - if (parent) - parent->AddChild(this); + wxNonOwnedWindow::Create( parent, winid, pos , size , MacRemoveBordersFromStyle(style) , name ) ; - MacCreateRealWindow( pos , size , MacRemoveBordersFromStyle(style) , name ) ; SetTitle( title ); SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE)); @@ -402,16 +356,11 @@ wxMDIChildFrame::~wxMDIChildFrame() DestroyChildren(); } -void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - return wxFrame::SetMenuBar( menu_bar ) ; -} - void wxMDIChildFrame::MacActivate(long timestamp, bool activating) { wxLogTrace(TRACE_MDI, wxT("MDI child=%p MacActivate(0x%08lx,%s)"),this, timestamp, activating ? wxT("ACTIV") : wxT("deact")); - wxMDIParentFrame *mdiparent = wxDynamicCast(m_parent, wxMDIParentFrame); + wxMDIParentFrame *mdiparent = m_mdiParent; wxASSERT(mdiparent); if (activating) @@ -420,7 +369,7 @@ void wxMDIChildFrame::MacActivate(long timestamp, bool activating) { wxLogTrace(TRACE_MDI, wxT("parent had been scheduled for deactivation, rehighlighting")); - UMAHighlightAndActivateWindow((WindowRef)s_macDeactivateWindow->MacGetWindowRef(), true); + UMAHighlightAndActivateWindow((WindowRef)s_macDeactivateWindow->GetWXWindow(), true); wxLogTrace(TRACE_MDI, wxT("finished highliting parent")); @@ -455,7 +404,9 @@ void wxMDIChildFrame::MacActivate(long timestamp, bool activating) else // schedule ourselves for deactivation { if (s_macDeactivateWindow) + { wxLogTrace(TRACE_MDI, wxT("window=%p SHOULD have been deactivated, oh well!"), s_macDeactivateWindow); + } wxLogTrace(TRACE_MDI, wxT("Scheduling delayed deactivation")); s_macDeactivateWindow = this; @@ -464,29 +415,17 @@ void wxMDIChildFrame::MacActivate(long timestamp, bool activating) } // MDI operations -void wxMDIChildFrame::Maximize() -{ - wxFrame::Maximize() ; -} - -void wxMDIChildFrame::Restore() -{ - wxFrame::Restore() ; -} - void wxMDIChildFrame::Activate() { - Raise (); + // The base class method calls Activate() so skip it to avoid infinite + // recursion and go directly to the real Raise() implementation. + wxFrame::Raise(); } //----------------------------------------------------------------------------- // wxMDIClientWindow //----------------------------------------------------------------------------- -wxMDIClientWindow::wxMDIClientWindow() -{ -} - wxMDIClientWindow::~wxMDIClientWindow() { DestroyChildren(); @@ -500,15 +439,9 @@ bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) return true; } -// Get size *available for subwindows* i.e. excluding menu bar. void wxMDIClientWindow::DoGetClientSize(int *x, int *y) const { wxDisplaySize( x , y ) ; } -// Explicitly call default scroll behaviour -void wxMDIClientWindow::OnScroll(wxScrollEvent& WXUNUSED(event)) -{ -} - #endif // wxUSE_MDI