non owned window implementation

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52801 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2008-03-25 07:59:13 +00:00
parent 409e6ce4dc
commit d10a37d155

View File

@@ -168,6 +168,8 @@ static const EventTypeSpec eventList[] =
// { kEventClassControl , kEventControlBoundsChanged } ,
} ;
wxWindowMac* targetWindow = NULL;
static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
{
OSStatus result = eventNotHandledErr ;
@@ -344,6 +346,7 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
inKillFocusEvent = true ;
wxFocusEvent event( wxEVT_KILL_FOCUS, thisWindow->GetId());
event.SetEventObject(thisWindow);
event.SetWindow(targetWindow);
thisWindow->HandleWindowEvent(event) ;
inKillFocusEvent = false ;
}
@@ -377,7 +380,9 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
}
#endif
ControlPartCode controlPart = cEvent.GetParameter<ControlPartCode>(kEventParamControlPart , typeControlPartCode );
if ( controlPart != kControlFocusNoPart )
targetWindow = thisWindow;
ControlPartCode previousControlPart = 0;
verify_noerr( HIViewGetFocusPart(controlRef, &previousControlPart));
@@ -1406,7 +1411,7 @@ void wxWindowMac::MacWindowToRootWindow( int *x , int *y ) const
if ( !IsTopLevel() )
{
wxTopLevelWindowMac* top = MacGetTopLevelWindow();
wxNonOwnedWindow* top = MacGetTopLevelWindow();
if (top)
{
pt.x -= MacGetLeftBorderSize() ;
@@ -1449,7 +1454,7 @@ void wxWindowMac::MacRootWindowToWindow( int *x , int *y ) const
if ( !IsTopLevel() )
{
wxTopLevelWindowMac* top = MacGetTopLevelWindow();
wxNonOwnedWindow* top = MacGetTopLevelWindow();
if (top)
{
wxMacControl::Convert( &pt , top->m_peer , m_peer ) ;
@@ -1580,7 +1585,7 @@ bool wxWindowMac::SetCursor(const wxCursor& cursor)
wxWindowMac *mouseWin = 0 ;
{
wxTopLevelWindowMac *tlw = MacGetTopLevelWindow() ;
wxNonOwnedWindow *tlw = MacGetTopLevelWindow() ;
WindowRef window = (WindowRef) ( tlw ? tlw->MacGetWindowRef() : 0 ) ;
ControlPartCode part ;
@@ -2562,14 +2567,14 @@ void wxWindowMac::ClearBackground()
void wxWindowMac::Update()
{
wxTopLevelWindowMac* top = MacGetTopLevelWindow();
wxNonOwnedWindow* top = MacGetTopLevelWindow();
if (top)
top->MacPerformUpdates() ;
}
wxTopLevelWindowMac* wxWindowMac::MacGetTopLevelWindow() const
wxNonOwnedWindow* wxWindowMac::MacGetTopLevelWindow() const
{
wxTopLevelWindowMac* win = NULL ;
wxNonOwnedWindow* win = NULL ;
WindowRef window = (WindowRef) MacGetTopLevelWindowRef() ;
if ( window )
win = wxFindWinFromMacWindow( window ) ;
@@ -2820,7 +2825,7 @@ WXWindow wxWindowMac::MacGetTopLevelWindowRef() const
#if wxUSE_POPUPWIN
wxPopupWindow* popupwin = wxDynamicCast(iter,wxPopupWindow);
if ( popupwin )
return popupwin->MacGetPopupWindowRef();
return popupwin->MacGetWindowRef();
#endif
}
iter = iter->GetParent() ;