X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5a7d70fe8922a56407a5b02b95a53fb16e787f70..85a0a12a9c6fe2885c0de8801e91a2f6d6e4119a:/src/mac/carbon/mdi.cpp diff --git a/src/mac/carbon/mdi.cpp b/src/mac/carbon/mdi.cpp index 8c8c790c6f..867b9b3099 100644 --- a/src/mac/carbon/mdi.cpp +++ b/src/mac/carbon/mdi.cpp @@ -1,20 +1,21 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp +// Name: src/mac/carbon/mdi.cpp // Purpose: MDI classes // Author: Stefan Csomor // Modified by: // Created: 1998-01-01 // RCS-ID: $Id$ // Copyright: (c) Stefan Csomor -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" #if wxUSE_MDI +#include "wx/mdi.h" + #ifndef WX_PRECOMP - #include "wx/mdi.h" #include "wx/log.h" #include "wx/menu.h" #include "wx/settings.h" @@ -31,12 +32,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow) BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) - EVT_ACTIVATE(wxMDIParentFrame::OnActivate) - EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) + EVT_ACTIVATE(wxMDIParentFrame::OnActivate) + EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow) - EVT_SCROLL(wxMDIClientWindow::OnScroll) + EVT_SCROLL(wxMDIClientWindow::OnScroll) END_EVENT_TABLE() static const wxChar *TRACE_MDI = _T("mdi"); @@ -302,7 +303,7 @@ bool wxMDIParentFrame::ShouldBeVisible() const if ( win->IsShown() && !wxDynamicCast(win, wxMDIChildFrame) #if wxUSE_STATUSBAR - && win != GetStatusBar() + && win != (wxWindow*) GetStatusBar() #endif && win != GetClientWindow() ) { @@ -350,28 +351,29 @@ void wxMDIChildFrame::Init() } bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) + wxWindowID id, + const wxString& title, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name) { SetName(name); - if ( id > -1 ) - m_windowId = id; - else + if ( id == wxID_ANY ) m_windowId = (int)NewControlId(); + else + m_windowId = id; if (parent) parent->AddChild(this); + MacCreateRealWindow( title, pos , size , MacRemoveBordersFromStyle(style) , name ) ; - SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE)); wxModelessWindows.Append(this); + return false; } @@ -387,29 +389,35 @@ void wxMDIChildFrame::SetMenuBar(wxMenuBar *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")); + wxLogTrace(TRACE_MDI, wxT("MDI child=%p MacActivate(0x%08lx,%s)"),this, timestamp, activating ? wxT("ACTIV") : wxT("deact")); + wxMDIParentFrame *mdiparent = wxDynamicCast(m_parent, wxMDIParentFrame); wxASSERT(mdiparent); - if(activating) + + if (activating) { - if(s_macDeactivateWindow == m_parent) + if (s_macDeactivateWindow == m_parent) { wxLogTrace(TRACE_MDI, wxT("parent had been scheduled for deactivation, rehighlighting")); + UMAHighlightAndActivateWindow((WindowRef)s_macDeactivateWindow->MacGetWindowRef(), true); - wxLogTrace(TRACE_MDI, wxT("done highliting parent")); + + wxLogTrace(TRACE_MDI, wxT("finished highliting parent")); + s_macDeactivateWindow = NULL; } - else if((mdiparent->m_currentChild==this) || !s_macDeactivateWindow) - mdiparent->wxFrame::MacActivate(timestamp,activating); - - if(mdiparent->m_currentChild && mdiparent->m_currentChild!=this) - mdiparent->m_currentChild->wxFrame::MacActivate(timestamp,false); + else if ((mdiparent->m_currentChild == this) || !s_macDeactivateWindow) + mdiparent->wxFrame::MacActivate(timestamp, activating); + + if (mdiparent->m_currentChild && mdiparent->m_currentChild != this) + mdiparent->m_currentChild->wxFrame::MacActivate(timestamp, false); mdiparent->m_currentChild = this; - if(s_macDeactivateWindow==this) + if (s_macDeactivateWindow == this) { - wxLogTrace(TRACE_MDI, wxT("Avoided deactivation/activation of this=%p"),this); - s_macDeactivateWindow=NULL; + wxLogTrace(TRACE_MDI, wxT("Avoided deactivation/activation of this=%p"), this); + + s_macDeactivateWindow = NULL; } else wxFrame::MacActivate(timestamp, activating); @@ -417,18 +425,19 @@ void wxMDIChildFrame::MacActivate(long timestamp, bool activating) else { // We were scheduled for deactivation, and now we do it. - if(s_macDeactivateWindow==this) + if (s_macDeactivateWindow == this) { s_macDeactivateWindow = NULL; - wxFrame::MacActivate(timestamp,activating); - if(mdiparent->m_currentChild==this) - mdiparent->wxFrame::MacActivate(timestamp,activating); + wxFrame::MacActivate(timestamp, activating); + if (mdiparent->m_currentChild == this) + mdiparent->wxFrame::MacActivate(timestamp, activating); } else // schedule ourselves for deactivation { - if(s_macDeactivateWindow) - wxLogTrace(TRACE_MDI, wxT("window=%p SHOULD have been deactivated, oh well!"),s_macDeactivateWindow); + 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,10 +473,11 @@ wxMDIClientWindow::~wxMDIClientWindow() bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) { - if ( !wxWindow::Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, style)) + if ( !wxWindow::Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, style) ) return false; - + wxModelessWindows.Append(this); + return true; } @@ -483,4 +493,3 @@ void wxMDIClientWindow::OnScroll(wxScrollEvent& event) } #endif // wxUSE_MDI -