]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/window.cpp
added consts to wxAcceleratorTable ctors from wxAcceleratorEntry array
[wxWidgets.git] / src / mac / window.cpp
index a821346eefc42a73f8aeebd4fc9e1c7e31a55294..af2cb1118d72e1a4c1d17aa71413f958517cafe9 100644 (file)
@@ -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 ;