Added support for delayed deactivation of windows (for MDI)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21126 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott 2003-06-13 20:24:32 +00:00
parent 0063c16999
commit 245f35816d
3 changed files with 30 additions and 0 deletions

View File

@ -67,6 +67,7 @@ public:
// implementation from now on
// --------------------------
static void MacDelayedDeactivation(long timestamp);
virtual void MacCreateRealWindow( const wxString& title,
const wxPoint& pos,
const wxSize& size,
@ -116,6 +117,7 @@ protected:
bool m_macNeedsErasing ;
static WXWindow s_macWindowInUpdate ;
static wxTopLevelWindowMac *s_macDeactivateWindow;
private :
#if TARGET_CARBON
WXEVENTHANDLERREF m_macEventHandler ;

View File

@ -439,6 +439,7 @@ void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win)
// ----------------------------------------------------------------------------
WXHWND wxTopLevelWindowMac::s_macWindowInUpdate = NULL;
wxTopLevelWindowMac *wxTopLevelWindowMac::s_macDeactivateWindow = NULL;
void wxTopLevelWindowMac::Init()
{
@ -916,8 +917,21 @@ void wxTopLevelWindowMac::MacMouseMoved( WXEVENTREF ev , short part)
#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);

View File

@ -439,6 +439,7 @@ void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win)
// ----------------------------------------------------------------------------
WXHWND wxTopLevelWindowMac::s_macWindowInUpdate = NULL;
wxTopLevelWindowMac *wxTopLevelWindowMac::s_macDeactivateWindow = NULL;
void wxTopLevelWindowMac::Init()
{
@ -916,8 +917,21 @@ void wxTopLevelWindowMac::MacMouseMoved( WXEVENTREF ev , short part)
#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);