/////////////////////////////////////////////////////////////////////////////
-// Name: frame.cpp
+// Name: src/mac/carbon/frame.cpp
// Purpose: wxFrame
// Author: Stefan Csomor
// Modified by:
#include "wx/wxprec.h"
#include "wx/frame.h"
-#include "wx/statusbr.h"
-#include "wx/toolbar.h"
-#include "wx/menuitem.h"
-#include "wx/menu.h"
-#include "wx/dcclient.h"
-#include "wx/dialog.h"
-#include "wx/settings.h"
-#include "wx/app.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/app.h"
+ #include "wx/dcclient.h"
+ #include "wx/menu.h"
+ #include "wx/dialog.h"
+ #include "wx/settings.h"
+ #include "wx/toolbar.h"
+ #include "wx/statusbr.h"
+ #include "wx/menuitem.h"
+#endif // WX_PRECOMP
#include "wx/mac/uma.h"
extern wxWindowList wxModelessWindows;
-extern wxList wxPendingDelete;
BEGIN_EVENT_TABLE(wxFrame, wxFrameBase)
EVT_ACTIVATE(wxFrame::OnActivate)
}
}
#endif
-
+
return pt;
}
wxStatusBar *statusBar;
statusBar = new wxStatusBar(this, id, style, name);
- statusBar->SetSize(100 , WX_MAC_STATUSBAR_HEIGHT);
+ statusBar->SetSize(100, WX_MAC_STATUSBAR_HEIGHT);
statusBar->SetFieldsCount(number);
return statusBar;
? m_winLastFocused->GetParent()
: NULL;
- if ( !parent )
+ if (parent == NULL)
parent = this;
wxSetFocusToChild(parent, &m_winLastFocused);
if (m_frameMenuBar != NULL)
{
- m_frameMenuBar->MacInstallMenuBar() ;
+ m_frameMenuBar->MacInstallMenuBar();
}
- else if (wxTheApp->GetTopWindow() && wxTheApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame)))
+ else
{
- // Trying toplevel frame membar
- if (((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar())
- ((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar()->MacInstallMenuBar();
- }
+ wxFrame *tlf = wxDynamicCast( wxTheApp->GetTopWindow(), wxFrame );
+ if (tlf != NULL)
+ {
+ // Trying top-level frame membar
+ if (tlf->GetMenuBar())
+ tlf->GetMenuBar()->MacInstallMenuBar();
+ }
+ }
}
}
void wxFrame::AttachMenuBar( wxMenuBar *menuBar )
{
- wxFrameBase::AttachMenuBar(menuBar);
+ wxFrame* tlf = wxDynamicCast( wxFindWinFromMacWindow( FrontNonFloatingWindow() ) , wxFrame );
+ bool makeCurrent = false;
+
+ // if this is already the current menubar or we are the frontmost window
+ if ( (tlf == this) || (m_frameMenuBar == wxMenuBar::MacGetInstalledMenuBar()) )
+ makeCurrent = true;
+ // or there is an app-level menubar like MDI
+ else if ( tlf && (tlf->GetMenuBar() == NULL) && (((wxFrame*)wxTheApp->GetTopWindow()) == this) )
+ makeCurrent = true;
+
+ wxFrameBase::AttachMenuBar( menuBar );
if (m_frameMenuBar)
+ {
m_frameMenuBar->SetInvokingWindow( this );
+ if (makeCurrent)
+ m_frameMenuBar->MacInstallMenuBar();
+ }
}
void wxFrame::DoGetClientSize(int *x, int *y) const
{
if ( m_frameToolBar == toolbar )
return ;
-
+
#if wxMAC_USE_NATIVE_TOOLBAR
if ( m_frameToolBar )
m_frameToolBar->MacInstallNativeToolbar( false ) ;
}
}
}
+
+void wxFrame::PositionBars()
+{
+#if wxUSE_STATUSBAR
+ PositionStatusBar();
#endif
+#if wxUSE_TOOLBAR
+ PositionToolBar();
+#endif
+}
+#endif