X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4ac219f63d40983d417cabc09b2ed29c0f87c376..03b444f6afb08ede0a50e3f68ef686337e1b380c:/src/mac/carbon/window.cpp?ds=sidebyside diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index a821346eef..af2cb1118d 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -148,6 +148,22 @@ wxWindowMac::~wxWindowMac() m_isBeingDeleted = TRUE; +#ifndef __WXUNIVERSAL__ + // VS: make sure there's no wxFrame with last focus set to us: + for ( wxWindow *win = GetParent(); win; win = win->GetParent() ) + { + wxFrame *frame = wxDynamicCast(win, wxFrame); + if ( frame ) + { + if ( frame->GetLastFocus() == this ) + { + frame->SetLastFocus((wxWindow*)NULL); + } + break; + } + } +#endif // __WXUNIVERSAL__ + if ( s_lastMouseWindow == this ) { s_lastMouseWindow = NULL ; @@ -237,7 +253,7 @@ void wxWindowMac::SetFocus() wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ; if ( control && control->GetMacControl() ) { - UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlEditTextPart ) ; + UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlFocusNextPart ) ; } #endif wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId); @@ -694,11 +710,17 @@ bool wxWindowMac::Show(bool show) if ( !wxWindowBase::Show(show) ) return FALSE; +/* + WindowRef window = (WindowRef) MacGetRootWindow() ; + wxWindowMac* win = wxFindWinFromMacWindow( window ) ; + if ( win == NULL && win->m_isBeingDeleted ) + return FALSE ; +*/ MacSuperShown( show ) ; + Refresh() ; +/* if ( !show ) { - WindowRef window = (WindowRef) MacGetRootWindow() ; - wxWindowMac* win = wxFindWinFromMacWindow( window ) ; if ( win && !win->m_isBeingDeleted ) Refresh() ; } @@ -706,7 +728,7 @@ bool wxWindowMac::Show(bool show) { Refresh() ; } - +*/ return TRUE; } @@ -798,16 +820,31 @@ void wxWindowMac::GetTextExtent(const wxString& string, int *x, int *y, void wxWindowMac::Refresh(bool eraseBack, const wxRect *rect) { if ( MacGetTopLevelWindow() == NULL ) - return ; + return ; - wxPoint client ; - client = GetClientAreaOrigin( ) ; - Rect clientrect = { -client.y , -client.x , m_height - client.y , m_width - client.x} ; + wxPoint client = GetClientAreaOrigin(); + int x1 = -client.x; + int y1 = -client.y; + int x2 = m_width - client.x; + int y2 = m_height - client.y; + + if (IsKindOf( CLASSINFO(wxButton))) + { + // buttons have an "aura" + y1 -= 5; + x1 -= 5; + y2 += 5; + x2 += 5; + } + + Rect clientrect = { y1, x1, y2, x2 }; + if ( rect ) { Rect r = { rect->y , rect->x , rect->y + rect->height , rect->x + rect->width } ; SectRect( &clientrect , &r , &clientrect ) ; } + if ( !EmptyRect( &clientrect ) ) { int top = 0 , left = 0 ; @@ -911,7 +948,7 @@ const wxBrush& wxWindowMac::MacGetBackgroundBrush() Rect extent = { 0 , 0 , 0 , 0 } ; int x , y ; x = y = 0 ; - wxSize size = GetSize() ; + wxSize size = parent->GetSize() ; parent->MacClientToRootWindow( &x , &y ) ; extent.left = x ; extent.top = y ;