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:
@@ -67,6 +67,7 @@ public:
|
|||||||
// implementation from now on
|
// implementation from now on
|
||||||
// --------------------------
|
// --------------------------
|
||||||
|
|
||||||
|
static void MacDelayedDeactivation(long timestamp);
|
||||||
virtual void MacCreateRealWindow( const wxString& title,
|
virtual void MacCreateRealWindow( const wxString& title,
|
||||||
const wxPoint& pos,
|
const wxPoint& pos,
|
||||||
const wxSize& size,
|
const wxSize& size,
|
||||||
@@ -116,6 +117,7 @@ protected:
|
|||||||
bool m_macNeedsErasing ;
|
bool m_macNeedsErasing ;
|
||||||
|
|
||||||
static WXWindow s_macWindowInUpdate ;
|
static WXWindow s_macWindowInUpdate ;
|
||||||
|
static wxTopLevelWindowMac *s_macDeactivateWindow;
|
||||||
private :
|
private :
|
||||||
#if TARGET_CARBON
|
#if TARGET_CARBON
|
||||||
WXEVENTHANDLERREF m_macEventHandler ;
|
WXEVENTHANDLERREF m_macEventHandler ;
|
||||||
|
@@ -439,6 +439,7 @@ void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win)
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
WXHWND wxTopLevelWindowMac::s_macWindowInUpdate = NULL;
|
WXHWND wxTopLevelWindowMac::s_macWindowInUpdate = NULL;
|
||||||
|
wxTopLevelWindowMac *wxTopLevelWindowMac::s_macDeactivateWindow = NULL;
|
||||||
|
|
||||||
void wxTopLevelWindowMac::Init()
|
void wxTopLevelWindowMac::Init()
|
||||||
{
|
{
|
||||||
@@ -916,8 +917,21 @@ void wxTopLevelWindowMac::MacMouseMoved( WXEVENTREF ev , short part)
|
|||||||
|
|
||||||
#endif
|
#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 )
|
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);
|
wxActivateEvent event(wxEVT_ACTIVATE, inIsActivating , m_windowId);
|
||||||
event.m_timeStamp = timestamp ;
|
event.m_timeStamp = timestamp ;
|
||||||
event.SetEventObject(this);
|
event.SetEventObject(this);
|
||||||
|
@@ -439,6 +439,7 @@ void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win)
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
WXHWND wxTopLevelWindowMac::s_macWindowInUpdate = NULL;
|
WXHWND wxTopLevelWindowMac::s_macWindowInUpdate = NULL;
|
||||||
|
wxTopLevelWindowMac *wxTopLevelWindowMac::s_macDeactivateWindow = NULL;
|
||||||
|
|
||||||
void wxTopLevelWindowMac::Init()
|
void wxTopLevelWindowMac::Init()
|
||||||
{
|
{
|
||||||
@@ -916,8 +917,21 @@ void wxTopLevelWindowMac::MacMouseMoved( WXEVENTREF ev , short part)
|
|||||||
|
|
||||||
#endif
|
#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 )
|
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);
|
wxActivateEvent event(wxEVT_ACTIVATE, inIsActivating , m_windowId);
|
||||||
event.m_timeStamp = timestamp ;
|
event.m_timeStamp = timestamp ;
|
||||||
event.SetEventObject(this);
|
event.SetEventObject(this);
|
||||||
|
Reference in New Issue
Block a user