virtual void DrawFieldText(wxDC& dc, int i);
   virtual void DrawField(wxDC& dc, int i);
   virtual void SetStatusText(const wxString& text, int number = 0) ;
-
   ////////////////////////////////////////////////////////////////////////
   // Implementation
 
+  virtual void MacSuperEnabled( bool enable ) ;
+
   void OnPaint(wxPaintEvent& event);
 protected:
 
 
 
 void wxApp::MacSuspend( bool convertClipboard )
 {
-    // we have to deactive the window manually
+    // we have to deactive the top level windows manually
 
-    wxTopLevelWindow* window = (wxTopLevelWindow*) GetTopWindow() ;
-    if ( window )
-        window->MacActivate( MacGetCurrentEvent() , false ) ;
+    wxNode* node = wxTopLevelWindows.First();
+    while (node)
+    {
+        wxTopLevelWindow* win = (wxTopLevelWindow*) node->Data();
+        win->MacActivate( MacGetCurrentEvent() , false ) ;
 
-        s_lastMouseDown = 0 ;
-        if( convertClipboard )
-        {
-            MacConvertPrivateToPublicScrap() ;
-        }
+        node = node->Next();
+    }
+
+     s_lastMouseDown = 0 ;
+     if( convertClipboard )
+     {
+         MacConvertPrivateToPublicScrap() ;
+     }
 
-        ::HideFloatingWindows() ;
+     ::HideFloatingWindows() ;
 }
 
 void wxApp::MacResume( bool convertClipboard )
 
 
 void wxApp::MacSuspend( bool convertClipboard )
 {
-    // we have to deactive the window manually
+    // we have to deactive the top level windows manually
 
-    wxTopLevelWindow* window = (wxTopLevelWindow*) GetTopWindow() ;
-    if ( window )
-        window->MacActivate( MacGetCurrentEvent() , false ) ;
+    wxNode* node = wxTopLevelWindows.First();
+    while (node)
+    {
+        wxTopLevelWindow* win = (wxTopLevelWindow*) node->Data();
+        win->MacActivate( MacGetCurrentEvent() , false ) ;
 
-        s_lastMouseDown = 0 ;
-        if( convertClipboard )
-        {
-            MacConvertPrivateToPublicScrap() ;
-        }
+        node = node->Next();
+    }
+
+     s_lastMouseDown = 0 ;
+     if( convertClipboard )
+     {
+         MacConvertPrivateToPublicScrap() ;
+     }
 
-        ::HideFloatingWindows() ;
+     ::HideFloatingWindows() ;
 }
 
 void wxApp::MacResume( bool convertClipboard )
 
 
 void wxControl::MacSuperEnabled( bool enabled ) 
 {
+    Refresh(FALSE) ;
     wxWindow::MacSuperEnabled( enabled ) ;
-/*
-    if ( m_macControl )
-    {
-        if ( UMAHasAppearance() )
-        {
-            if ( !enabled )
-            {
-                ::DeactivateControl( m_macControl ) ; 
-            }
-            else
-            {
-                if ( m_macEnabled )
-                    ::ActivateControl( m_macControl ) ;
-            }
-        }
-        else
-        {
-            if ( !enabled )
-            {
-                ::HiliteControl( m_macControl , 255 ) ;
-            }
-            else
-            {
-                if ( m_macEnabled )
-                    ::HiliteControl( m_macControl , 0 ) ;
-            }
-        }
-    }
-    wxWindow::MacSuperEnabled( enabled ) ;
-*/
 }
 
 void  wxControl::MacSuperShown( bool show ) 
 
 
   wxRect rect;
   GetFieldRect(i, rect);
+  
+  if ( !IsWindowHilited( MacGetRootWindow() ) )
+  {
+    dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ;
+  }
 
   wxString text(GetStatusText(i));
 
 void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) )
 {
        wxPaintDC dc(this);
-       wxPen black( wxBLACK , 1 , wxSOLID ) ;
+       
+  if ( IsWindowHilited( MacGetRootWindow() ) )
+  {
+       wxPen black( wxBLACK , 1 , wxSOLID ) ;
        wxPen white( wxWHITE , 1 , wxSOLID ) ;
        
     dc.SetPen(black);
        dc.SetPen(white);
     dc.DrawLine(0, 1 ,
            m_width , 1);
-
+  }
+  else
+  {
+    dc.SetPen(wxPen(wxColour(0x80,0x80,0x80),1,wxSOLID));
+    dc.DrawLine(0, 0 ,
+           m_width , 0);
+  }
 
   int i;
   if ( GetFont().Ok() )
         dc.SetFont(wxNullFont);
 #   endif // MSW
 }
+
+void wxStatusBarMac::MacSuperEnabled( bool enabled ) 
+{
+    Refresh(FALSE) ;
+    wxWindow::MacSuperEnabled( enabled ) ;
+}
\ No newline at end of file
 
     if (m_width <= 0 || m_height <= 0)
         return;
 
+  if ( !IsWindowHilited( MacGetRootWindow() ) )
+  {
+    dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ;
+  }
   wxString paragraph;
   int i = 0 ;
   wxString text = m_label;
 
     
     UMAHighlightAndActivateWindow( m_macWindow , inIsActivating ) ;
     
-    Refresh( FALSE ) ; 
-//  MacSuperEnabled( inIsActivating ) ;
-//  MacUpdateImmediately() ;
+    MacSuperEnabled( inIsActivating ) ;
 }
 
 void wxTopLevelWindowMac::MacKeyDown( EventRecord *ev ) 
 
 
 void wxWindowMac::MacSuperEnabled( bool enabled ) 
 {
+    if ( !IsTopLevel() )
+    {
+      // to be absolutely correct we'd have to invalidate (with eraseBkground 
+      // because unter MacOSX the frames are drawn with an addXXX mode)
+      // the borders area
+    }
     wxNode *node = GetChildren().First();
     while ( node )
     {
 
 
 void wxControl::MacSuperEnabled( bool enabled ) 
 {
+    Refresh(FALSE) ;
     wxWindow::MacSuperEnabled( enabled ) ;
-/*
-    if ( m_macControl )
-    {
-        if ( UMAHasAppearance() )
-        {
-            if ( !enabled )
-            {
-                ::DeactivateControl( m_macControl ) ; 
-            }
-            else
-            {
-                if ( m_macEnabled )
-                    ::ActivateControl( m_macControl ) ;
-            }
-        }
-        else
-        {
-            if ( !enabled )
-            {
-                ::HiliteControl( m_macControl , 255 ) ;
-            }
-            else
-            {
-                if ( m_macEnabled )
-                    ::HiliteControl( m_macControl , 0 ) ;
-            }
-        }
-    }
-    wxWindow::MacSuperEnabled( enabled ) ;
-*/
 }
 
 void  wxControl::MacSuperShown( bool show ) 
 
 
   wxRect rect;
   GetFieldRect(i, rect);
+  
+  if ( !IsWindowHilited( MacGetRootWindow() ) )
+  {
+    dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ;
+  }
 
   wxString text(GetStatusText(i));
 
 void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) )
 {
        wxPaintDC dc(this);
-       wxPen black( wxBLACK , 1 , wxSOLID ) ;
+       
+  if ( IsWindowHilited( MacGetRootWindow() ) )
+  {
+       wxPen black( wxBLACK , 1 , wxSOLID ) ;
        wxPen white( wxWHITE , 1 , wxSOLID ) ;
        
     dc.SetPen(black);
        dc.SetPen(white);
     dc.DrawLine(0, 1 ,
            m_width , 1);
-
+  }
+  else
+  {
+    dc.SetPen(wxPen(wxColour(0x80,0x80,0x80),1,wxSOLID));
+    dc.DrawLine(0, 0 ,
+           m_width , 0);
+  }
 
   int i;
   if ( GetFont().Ok() )
         dc.SetFont(wxNullFont);
 #   endif // MSW
 }
+
+void wxStatusBarMac::MacSuperEnabled( bool enabled ) 
+{
+    Refresh(FALSE) ;
+    wxWindow::MacSuperEnabled( enabled ) ;
+}
\ No newline at end of file
 
     if (m_width <= 0 || m_height <= 0)
         return;
 
+  if ( !IsWindowHilited( MacGetRootWindow() ) )
+  {
+    dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ;
+  }
   wxString paragraph;
   int i = 0 ;
   wxString text = m_label;
 
     
     UMAHighlightAndActivateWindow( m_macWindow , inIsActivating ) ;
     
-    Refresh( FALSE ) ; 
-//  MacSuperEnabled( inIsActivating ) ;
-//  MacUpdateImmediately() ;
+    MacSuperEnabled( inIsActivating ) ;
 }
 
 void wxTopLevelWindowMac::MacKeyDown( EventRecord *ev ) 
 
 
 void wxWindowMac::MacSuperEnabled( bool enabled ) 
 {
+    if ( !IsTopLevel() )
+    {
+      // to be absolutely correct we'd have to invalidate (with eraseBkground 
+      // because unter MacOSX the frames are drawn with an addXXX mode)
+      // the borders area
+    }
     wxNode *node = GetChildren().First();
     while ( node )
     {