// ----------------------------------------------------------------------------
WXHWND wxTopLevelWindowMac::s_macWindowInUpdate = NULL;
+wxTopLevelWindowMac *wxTopLevelWindowMac::s_macDeactivateWindow = NULL;
void wxTopLevelWindowMac::Init()
{
long style,
const wxString& name )
{
+ OSStatus err = noErr ;
SetName(name);
m_windowStyle = style;
m_isShown = FALSE;
else
{
if ( HasFlag( wxMINIMIZE_BOX ) || HasFlag( wxMAXIMIZE_BOX ) ||
- HasFlag( wxSYSTEM_MENU ) )
+ HasFlag( wxCLOSE_BOX ) || HasFlag( wxSYSTEM_MENU ) )
{
wclass = kDocumentWindowClass ;
}
}
}
- if ( HasFlag( wxMINIMIZE_BOX ) || HasFlag( wxMAXIMIZE_BOX ) )
+ if ( HasFlag( wxMINIMIZE_BOX ) )
{
- attr |= kWindowFullZoomAttribute ;
attr |= kWindowCollapseBoxAttribute ;
}
+ if ( HasFlag( wxMAXIMIZE_BOX ) )
+ {
+ attr |= kWindowFullZoomAttribute ;
+ }
if ( HasFlag( wxRESIZE_BORDER ) )
{
attr |= kWindowResizableAttribute ;
}
- if ( HasFlag( wxSYSTEM_MENU ) )
+ if ( HasFlag( wxCLOSE_BOX) )
{
attr |= kWindowCloseBoxAttribute ;
}
customWindowDefSpec.defType = kWindowDefProcPtr;
customWindowDefSpec.u.defProc = NewWindowDefUPP(wxShapedMacWindowDef);
- ::CreateCustomWindow( &customWindowDefSpec, wclass,
+ err = ::CreateCustomWindow( &customWindowDefSpec, wclass,
attr, &theBoundsRect,
(WindowRef*) &m_macWindow);
}
else
#endif
{
- ::CreateNewWindow( wclass , attr , &theBoundsRect , (WindowRef*)&m_macWindow ) ;
+ err = ::CreateNewWindow( wclass , attr , &theBoundsRect , (WindowRef*)&m_macWindow ) ;
}
+ wxCHECK_RET( err == noErr, wxT("Mac OS error when trying to create new window") );
wxAssociateWinWithMacWindow( m_macWindow , this ) ;
UMASetWTitle( (WindowRef)m_macWindow , title ) ;
::CreateRootControl( (WindowRef)m_macWindow , (ControlHandle*)&m_macRootControl ) ;
#if TARGET_CARBON
InstallStandardEventHandler( GetWindowEventTarget(MAC_WXHWND(m_macWindow)) ) ;
InstallWindowEventHandler(MAC_WXHWND(m_macWindow), GetwxMacWindowEventHandlerUPP(),
- GetEventTypeCount(eventList), eventList, this, &((EventHandlerRef)m_macEventHandler));
+ GetEventTypeCount(eventList), eventList, this, (EventHandlerRef *)&m_macEventHandler);
#endif
m_macFocus = NULL ;
#endif
+void wxTopLevelWindowMac::MacDelayedDeactivation(long timestamp)
+{
+ if(s_macDeactivateWindow)
+ {
+ wxLogDebug("Doing delayed deactivation of %p",s_macDeactivateWindow);
+ s_macDeactivateWindow->MacActivate(timestamp, false);
+ }
+}
+
void wxTopLevelWindowMac::MacActivate( long timestamp , bool inIsActivating )
{
+ wxLogDebug("TopLevel=%p::MacActivate",this);
+ if(s_macDeactivateWindow==this)
+ s_macDeactivateWindow=NULL;
+ MacDelayedDeactivation(timestamp);
wxActivateEvent event(wxEVT_ACTIVATE, inIsActivating , m_windowId);
event.m_timeStamp = timestamp ;
event.SetEventObject(this);