]> git.saurik.com Git - wxWidgets.git/commitdiff
rewrite to avoid unnecessary redraws
authorStefan Csomor <csomor@advancedconcepts.ch>
Wed, 30 May 2001 20:46:00 +0000 (20:46 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Wed, 30 May 2001 20:46:00 +0000 (20:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10383 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

44 files changed:
include/wx/mac/uma.h
include/wx/mac/window.h
src/mac/bmpbuttn.cpp
src/mac/button.cpp
src/mac/carbon/bmpbuttn.cpp
src/mac/carbon/button.cpp
src/mac/carbon/checkbox.cpp
src/mac/carbon/choice.cpp
src/mac/carbon/combobox.cpp
src/mac/carbon/control.cpp
src/mac/carbon/gauge.cpp
src/mac/carbon/listbox.cpp
src/mac/carbon/notebmac.cpp
src/mac/carbon/radiobox.cpp
src/mac/carbon/radiobut.cpp
src/mac/carbon/scrolbar.cpp
src/mac/carbon/slider.cpp
src/mac/carbon/spinbutt.cpp
src/mac/carbon/statbox.cpp
src/mac/carbon/statlmac.cpp
src/mac/carbon/tabctrl.cpp
src/mac/carbon/textctrl.cpp
src/mac/carbon/toolbar.cpp
src/mac/carbon/uma.cpp
src/mac/carbon/window.cpp
src/mac/checkbox.cpp
src/mac/choice.cpp
src/mac/combobox.cpp
src/mac/control.cpp
src/mac/gauge.cpp
src/mac/listbox.cpp
src/mac/notebmac.cpp
src/mac/radiobox.cpp
src/mac/radiobut.cpp
src/mac/scrolbar.cpp
src/mac/slider.cpp
src/mac/spinbutt.cpp
src/mac/statbox.cpp
src/mac/statlmac.cpp
src/mac/tabctrl.cpp
src/mac/textctrl.cpp
src/mac/toolbar.cpp
src/mac/uma.cpp
src/mac/window.cpp

index 0898dc057a32919702ef22f4cbf65a08a4c60cd5..937ef9d0f78d8008f93f16c230019000fdfaac49 100644 (file)
         #include <Carbon/Carbon.h>
     #endif
 #else
-    #define UMA_USE_APPEARANCE 0
+    #define UMA_USE_APPEARANCE 1
     #define UMA_USE_WINDOWMGR 0
 #endif
 
+#if UMA_USE_APPEARANCE == 0 
+    #pragma error "wxMac needs appearance"
+#endif
+
 #if !UMA_USE_8_6 && UMA_USE_WINDOWMGR
 #undef UMA_USE_WINDOWMGR
 #define UMA_USE_WINDOWMGR 0
@@ -101,6 +105,8 @@ void                        UMACloseWindow(WindowRef inWindowRef) ;
 
 void                   UMADrawControl( ControlHandle inControl ) ;
 
+void                   UMAEnableControl( ControlHandle inControl ) ;
+void                   UMADisableControl( ControlHandle inControl ) ;
 void                   UMAActivateControl( ControlHandle inControl ) ;
 void                   UMADeactivateControl( ControlHandle inControl ) ;
 void                   UMAApplyThemeBackground                 (ThemeBackgroundKind    inKind,
index e8efb280d1abc56e635885145a8cf7d52f912f04..df3b0b102db8140381c377f98bdc1c5fed320800 100644 (file)
@@ -48,6 +48,7 @@ public:
                        WindowRef                                                       m_macWindow ;
                        ControlHandle                                   m_macRootControl ;
                        wxWindow*                                                       m_macFocus ;
+                       bool                                m_macHasReceivedFirstActivate ;
        } MacWindowData ;
        
        
index 95dfb80ad464c5f47bf49e0b87e825c59302049b..dbbfc52d7a6522ec580ed1f53a944d7467cd579e 100644 (file)
@@ -57,7 +57,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit
        
        MacPreControlCreate( parent , id ,  "" , pos , wxSize( width , height ) ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 
                kControlBehaviorOffsetContents + 
                    ( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0, 
                (( style & wxBU_AUTODRAW ) ? kControlBevelButtonSmallBevelProc : kControlBevelButtonNormalBevelProc ), (long) this ) ;
index c67c470acfbe1ce05e35e4712f441df06949b063..53c0861dbe5bac228463e87318395a9d38180b2c 100644 (file)
@@ -35,7 +35,7 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlPushButtonProc , (long) this ) ;
        wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
        
index 95dfb80ad464c5f47bf49e0b87e825c59302049b..dbbfc52d7a6522ec580ed1f53a944d7467cd579e 100644 (file)
@@ -57,7 +57,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit
        
        MacPreControlCreate( parent , id ,  "" , pos , wxSize( width , height ) ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 
                kControlBehaviorOffsetContents + 
                    ( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0, 
                (( style & wxBU_AUTODRAW ) ? kControlBevelButtonSmallBevelProc : kControlBevelButtonNormalBevelProc ), (long) this ) ;
index c67c470acfbe1ce05e35e4712f441df06949b063..53c0861dbe5bac228463e87318395a9d38180b2c 100644 (file)
@@ -35,7 +35,7 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlPushButtonProc , (long) this ) ;
        wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
        
index c3d4ce9709f224f7356a82070aa006f3d1e27c50..f3eb8eca635db5077488bc79d1bd6ce90e0bd374 100644 (file)
@@ -34,7 +34,7 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlCheckBoxProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 9363a6cdda1275826287db0c8a7e0a9f1e8b1984..e9a8357ea58d56d4d334ad1d3d5d4e1ef046734f 100644 (file)
@@ -44,7 +44,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
        
                MacPreControlCreate( parent , id ,  "" , pos , size ,style, validator , name , &bounds , title ) ;
 
-               m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , -12345 , 0 , 
+               m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0 , 
                kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ; 
        
                m_macPopUpMenuHandle =  NewMenu( 1 , "\pPopUp Menu" ) ;
index d765346c5c3f3affd1eba9b676ec27c028b78d66..36e92ad7a388941ba78371ffb5a93e65252efbd8 100644 (file)
@@ -40,7 +40,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
        
                MacPreControlCreate( parent , id ,  "" , pos , size ,style, validator , name , &bounds , title ) ;
        
-               m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , -12345 , 0, 
+               m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0, 
                kControlPopupButtonProc , (long) this ) ; 
        
                m_macPopUpMenuHandle =  NewMenu( 1 , "\pPopUp Menu" ) ;
index 8268b03c8bd330f30ab81154a84394cfbe15087e..4ffb21ccacb5136d1908ff82bb8cd3e46bcb44aa 100644 (file)
@@ -136,6 +136,7 @@ void wxControl::SetLabel(const wxString& title)
 #endif
                ::SetControlTitle( m_macControl , maclabel ) ;
        }
+       Refresh() ;
 }
 
 wxSize wxControl::DoGetBestSize() const
@@ -270,6 +271,7 @@ void wxControl::MacPostControlCreate()
        m_macControlIsShown  = true ;
        MacAdjustControlRect() ;
        wxAssociateControlWithMacControl( m_macControl , this ) ;
+       UMAShowControl( m_macControl ) ;
 }
 
 void wxControl::MacAdjustControlRect() 
@@ -358,15 +360,7 @@ void wxControl::MacSuperChangedPosition()
        
                if ( mac_x != former_mac_x || mac_y != former_mac_y )
                {
-                       {
-                               Rect inval = { former_mac_y , former_mac_x , former_mac_y + m_height , former_mac_x + m_width } ;
-                               InvalWindowRect( rootwindow , &inval ) ;
-                       }
                        UMAMoveControl( m_macControl , mac_x + m_macHorizontalBorder , mac_y + m_macVerticalBorder ) ;
-                       {
-                               Rect inval = { mac_y , mac_x , mac_y + m_height , mac_x + m_width } ;
-                               InvalWindowRect( rootwindow , &inval ) ;
-                       }
                }
                if ( wxrootwindow->IsKindOf( CLASSINFO( wxDialog ) ) )
                {
@@ -494,15 +488,7 @@ void  wxControl::DoSetSize(int x, int y,
        
        if ( mac_x != former_mac_x || mac_y != former_mac_y )
        {
-               {
-                       Rect inval = { former_mac_y , former_mac_x , former_mac_y + m_height , former_mac_x + m_width } ;
-                       InvalWindowRect( macrootwindow, &inval ) ;
-               }
                UMAMoveControl( m_macControl , mac_x + m_macHorizontalBorder , mac_y  + m_macVerticalBorder ) ;
-               {
-                       Rect inval = { mac_y , mac_x , mac_y + m_height , mac_x + m_width } ;
-                       InvalWindowRect(macrootwindow, &inval ) ;
-               }
        }
 
        if ( actualX != former_x || actualY != former_y )
@@ -579,21 +565,10 @@ bool  wxControl::Enable(bool enable)
 
        if ( m_macControl )
        {
-               
-               if ( UMAHasAppearance() )
-               {
-                       if ( enable )
-                               ::ActivateControl( m_macControl ) ;
-                       else
-                               ::DeactivateControl( m_macControl ) ;
-               }
+               if ( enable )
+                   UMAActivateControl( m_macControl ) ;
                else
-               {
-                       if ( enable )
-                               ::HiliteControl( m_macControl , 0 ) ;
-                       else
-                               ::HiliteControl( m_macControl , 255 ) ;
-               }
+                   UMADeactivateControl( m_macControl ) ;
        }
        return TRUE ;
 }
index 67d5dd9c845ff2db660fd5d9efcc6d6cb1a65adf..fe19204a45b3ab89a607246e7cc8a6c75d33d795 100644 (file)
@@ -41,7 +41,7 @@ bool wxGauge::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style & 0xE0FFFFFF /* no borders on mac */ , validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , range, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , range, 
                kControlProgressBarProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 1ed703e186506a9856d770a9922b075181c25dc3..05cc0e249a6927baa3f82ebd2461c8aa253ea602 100644 (file)
@@ -67,7 +67,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , kwxMacListWithVerticalScrollbar , 0 , 0, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , kwxMacListWithVerticalScrollbar , 0 , 0, 
                kControlListBoxProc , (long) this ) ;
        
        long    result ;
index 88b1ef2ce5743a2bc3787ec3558753b2795bcf88..686a969462e84bd2d4357dba6ccd3e04cedafeed 100644 (file)
@@ -116,7 +116,7 @@ bool wxNotebook::Create(wxWindow *parent,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlTabSmallProc , (long) this ) ;
        
        MacPostControlCreate() ;
index b18f098d3c4197e811a6c974acbddbda93a67f81..3c4c07e73e7a3a1ce8a6077f9f6d939bee8f1e29 100644 (file)
@@ -111,7 +111,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, val , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlGroupBoxTextTitleProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 84f2a739cbf139a98d23f2f72ca9071acbbecebd..8ce7963ab1aa30a1bbdffee4f319ead5f6c1f2b4 100644 (file)
@@ -32,7 +32,7 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlRadioButtonProc , (long) this ) ;
        
        MacPostControlCreate() ;
@@ -67,9 +67,11 @@ void wxRadioButton::SetValue(bool val)
 {
        int i;
        wxRadioButton *cycle;
-       
+         if ( GetControlValue( m_macControl ) == val )
+           return ;
+           
    ::SetControlValue( m_macControl , val ) ;
-   
+   Refresh() ;
    if (val) 
    {
                cycle=this->NextInCycle();
@@ -95,7 +97,7 @@ void wxRadioButton::Command (wxCommandEvent & event)
 
 void wxRadioButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) 
 {
-       SetValue(true) ;
+         SetValue(true) ;
     wxCommandEvent event(wxEVT_COMMAND_RADIOBUTTON_SELECTED, m_windowId );
     event.SetEventObject(this);
     event.SetInt( GetValue() );
index fb7a5311ca5939eeff049e04a5823b58471f8a04..0c1a130c78d1a8c10fa2c8ca150437340a9c7502 100644 (file)
@@ -41,7 +41,7 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 100, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 100, 
                kControlScrollBarLiveProc , (long) this ) ;
        
        wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
index ffb6631aca0c0956a0881865dfc665bc138260f0..bce30a4bd1b95bf80694d8483ac266b72a5b7d12 100644 (file)
@@ -133,7 +133,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
     }
   
   m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds ,
-                               title , true ,  value , minValue , maxValue, 
+                               title , false ,  value , minValue , maxValue, 
                                kControlSliderProc +  kControlSliderLiveFeedback + ( ( style & wxSL_AUTOTICKS ) ? kControlSliderHasTickMarks : 0 ) , (long) this ) ;
   
   wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
index 4003a1a3889eafee795cdaa5fa8b56eee4940210..c2b0a7bbc2d0f5614fc9bdeb5199acacd73943d5 100644 (file)
@@ -49,7 +49,7 @@ bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, c
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style,*( (wxValidator*) NULL ) , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 100, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 100, 
                kControlLittleArrowsProc , (long) this ) ;
        
        wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
index e0d8257d0f19ead27aaae78cb869c60810bde958..c50c7d8a28b06d37414f0880f5ef16d01023d90b 100644 (file)
@@ -41,7 +41,7 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlGroupBoxTextTitleProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 93644da485219b8deb39dc68db1c826827ded359..f5802a2095e2bf0bbabfd343263cfc0270396ac8 100644 (file)
@@ -54,7 +54,7 @@ bool wxStaticLine::Create( wxWindow *parent,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlSeparatorLineProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 54821412688f56487af8752ba8fe91edbe432c4c..9d840214d00982a5b5f36e4585d4d500299006d8 100644 (file)
@@ -39,7 +39,7 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlTabSmallProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 9ff3b8163768cd92a6e51a692673fac401c94142..9a2c72ef33e438996e7e8ad20ba82887894b24fe 100644 (file)
@@ -107,7 +107,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
 
        MacPreControlCreate( parent , id ,  "" , pos , mySize ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , "\p" , false , 0 , 0 , 1, 
                ( style & wxTE_PASSWORD ) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ;
        MacPostControlCreate() ;
 
index 8e1d455afd0d82940218da77543eed335df9ada5..df820b8cb904144ff294af1948f63dd600741069 100644 (file)
@@ -310,7 +310,7 @@ bool wxToolBar::Realize()
                                
                        if ( icon )
                        {
-                               m_macToolHandle = UMANewControl( window , &toolrect , "\p" , true , 0 , 
+                               m_macToolHandle = UMANewControl( window , &toolrect , "\p" , false , 0 , 
                                        behaviour + kControlContentPictHandle , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ;
                                ControlButtonContentInfo info ;
                                
@@ -321,9 +321,10 @@ bool wxToolBar::Realize()
                        }
                        else
                        {
-                                               m_macToolHandle = UMANewControl( window , &toolrect , "\p" , true , 0 , 
+                                               m_macToolHandle = UMANewControl( window , &toolrect , "\p" , false , 0 , 
                                                behaviour  , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ;
                        }
+                       UMAShowControl( m_macToolHandle ) ;
                        m_macToolHandles.Add( m_macToolHandle ) ;
                        tool->m_index = m_macToolHandles.Count() -1 ;
                        if ( !tool->IsEnabled() )
index 4cfea0850597256e32f9aa7294c7ce6f06764d5a..c96a8f93de11dbdf2527c7e8264391a8e3b8847a 100644 (file)
@@ -425,6 +425,7 @@ void                        UMAGetWTitleC( WindowRef inWindowRef , char *title )
 void                   UMAShowWindow( WindowRef inWindowRef ) 
 {
        ShowWindow( inWindowRef ) ;
+
 }
 
 void                   UMAHideWindow( WindowRef inWindowRef ) 
@@ -459,20 +460,20 @@ void                      UMACloseWindow(WindowRef inWindowRef)
 
 void UMAActivateControl( ControlHandle inControl ) 
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
 #if UMA_USE_APPEARANCE
     if ( UMAHasAppearance() )
-    {
+    { 
+      if ( !UMAIsControlActive( inControl ) )
+      {
+        bool visible = IsControlVisible( inControl ) ;
+        if ( visible )
+          SetControlVisibility( inControl , false , false ) ;
         ::ActivateControl( inControl ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , true , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
+       }
     }
     else
 #endif
@@ -484,15 +485,6 @@ void UMAActivateControl( ControlHandle inControl )
     {
     }
 #endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
-DisposeRgn( updateRgn ) ;
-
 }
 
 void UMADrawControl( ControlHandle inControl ) 
@@ -533,111 +525,54 @@ void UMADrawControl( ControlHandle inControl )
 
 void UMAMoveControl( ControlHandle inControl , short x , short y ) 
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
-#if UMA_USE_APPEARANCE
     if ( UMAHasAppearance() )
     {
+        bool visible = UMAIsControlVisible( inControl ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , false , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
         ::MoveControl( inControl , x , y ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , true , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
     }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGAMoveControl( inControl , x ,y  ) ;
-    }
-#else
-    {
-    }
-#endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
 }
 
 void UMASizeControl( ControlHandle inControl , short x , short y ) 
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
-#if UMA_USE_APPEARANCE
     if ( UMAHasAppearance() )
     {
+        bool visible = UMAIsControlVisible( inControl ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , false , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
         ::SizeControl( inControl , x , y ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , true , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
     }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGASizeControl( inControl , x ,y  ) ;
-    }
-#else
-    {
-    }
-#endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
-
 }
 
 void UMADeactivateControl( ControlHandle inControl ) 
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
-#if UMA_USE_APPEARANCE
     if ( UMAHasAppearance() )
     {
+      if ( UMAIsControlActive( inControl ) )
+      {
+        bool visible = IsControlVisible( inControl ) ;
+        if ( visible )
+          SetControlVisibility( inControl , false , false ) ;
         ::DeactivateControl( inControl ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , true , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
+       }
     }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGADeactivateControl( inControl ) ;
-    }
-#else
-    {
-    }
-#endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
 }
 
 void UMASetThemeWindowBackground              (WindowRef                               inWindow,
@@ -733,16 +668,6 @@ void UMADisposeControl (ControlHandle                      theControl)
 void UMAHiliteControl  (ControlHandle                  inControl,
                         ControlPartCode                hiliteState)
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
     if ( UMAHasAppearance() )
     {
         ::HiliteControl( inControl , hiliteState ) ;
@@ -751,45 +676,23 @@ void UMAHiliteControl     (ControlHandle                  inControl,
     {
         ::HiliteControl( inControl , hiliteState ) ;
     }
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
 }
 
+// shows the control and adds the region to the update region
 void UMAShowControl                                            (ControlHandle                  inControl)
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
     if ( UMAHasAppearance() )
     {
-        ::ShowControl( inControl ) ;
+        SetControlVisibility( inControl , true , false ) ;
+        InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
     }
     else
     {
-        ::ShowControl( inControl ) ;
+        (**inControl).contrlVis = 255 ;
     }
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
 }
 
-
+// Hides the control and adds the region to the update region
 void UMAHideControl                                            (ControlHandle                  inControl)
 {
     if ( UMAHasAppearance() )
@@ -841,7 +744,13 @@ bool UMAIsControlVisible                           (ControlHandle                  inControl)
        {
        return IsControlVisible( inControl ) ;
    }
+   else
 #endif
+  {
+#if !TARGET_CARBON
+    return (**inControl).contrlVis == 255 ;
+#endif
+  }
        return true ;
 }
 
@@ -1538,5 +1447,6 @@ OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState )
   {
   }
 #endif
+  return noErr ;
 }
 
index 725202751522545f5206ecba78ea752a2e9fb001..3a5cfcd895c14d3c66ffcdce024049d65c746f87 100644 (file)
@@ -152,6 +152,20 @@ void wxWindow::Init()
 // Destructor
 wxWindow::~wxWindow()
 {
+    // deleting a window while it is shown invalidates the region
+    if ( IsShown() ) {
+        wxWindow* iter = this ;
+        while( iter ) {
+            if ( iter->m_macWindowData )
+            {
+                Refresh() ;
+                break ;
+            }
+            iter = iter->GetParent() ;
+            
+        }
+    }
+    
     m_isBeingDeleted = TRUE;
 
        if ( s_lastMouseWindow == this )
@@ -754,11 +768,7 @@ bool wxWindow::Show(bool show)
        }
        MacSuperShown( show ) ;
        Refresh() ;
-    /*
-    // this will be done by the activate event
-       if(m_macWindowData)
-               MacUpdateImmediately() ;
-    */
+
     return TRUE;
 }
 
@@ -899,6 +909,9 @@ void wxWindow::MacEraseBackground( Rect *rect )
 
 void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
 {
+//    if ( !IsShown() )
+//        return ;
+        
        wxMacDrawingHelper focus( this ) ;
        if ( focus.Ok() )
        {
@@ -1143,6 +1156,7 @@ void  wxWindow::MacCreateRealWindow( const wxString& title,
        UMACreateRootControl( m_macWindowData->m_macWindow , &m_macWindowData->m_macRootControl ) ;
 
        m_macWindowData->m_macFocus = NULL ;
+       m_macWindowData->m_macHasReceivedFirstActivate = true ;
 }
 
 void wxWindow::MacPaint( wxPaintEvent &event ) 
@@ -1694,8 +1708,12 @@ void wxWindow::MacFireMouseEvent( EventRecord *ev )
                                else
                                        event.SetEventType(wxEVT_LEFT_DCLICK ) ;
                        }
+                   lastWhen = 0 ;
+               }
+               else
+               {
+                   lastWhen = ev->when ;
                }
-               lastWhen = ev->when ;
                lastWhere = localwhere ;
        }
 
@@ -1768,15 +1786,18 @@ void wxWindow::MacMouseMoved( EventRecord *ev , short part)
 }
 void wxWindow::MacActivate( EventRecord *ev , bool inIsActivating )
 {
+    if ( !m_macWindowData->m_macHasReceivedFirstActivate )
+        m_macWindowData->m_macHasReceivedFirstActivate = true ;
+    
        wxActivateEvent event(wxEVT_ACTIVATE, inIsActivating , m_windowId);
        event.m_timeStamp = ev->when ;
        event.SetEventObject(this);
        
        GetEventHandler()->ProcessEvent(event);
        
+    Refresh() ;
        UMAHighlightAndActivateWindow( m_macWindowData->m_macWindow , inIsActivating ) ;
-       Refresh() ;
-       MacUpdateImmediately() ;
+//     MacUpdateImmediately() ;
 }
 
 void wxWindow::MacRedraw( RgnHandle updatergn , long time)
@@ -1942,7 +1963,7 @@ void wxWindow::MacUpdateImmediately()
                    GetPortVisibleRegion( GetWindowPort( window ), region );
 
                                // if windowshade gives incompatibility , take the follwing out
-                   if ( !EmptyRgn( region ) )
+                   if ( !EmptyRgn( region ) && win->m_macWindowData->m_macHasReceivedFirstActivate )
                    {
                                        win->MacRedraw( region , wxTheApp->sm_lastMessageTime ) ;
                    }
@@ -1973,7 +1994,7 @@ void wxWindow::MacUpdate( EventRecord *ev )
             GetPortVisibleRegion( GetWindowPort( window ), region );
 
                        // if windowshade gives incompatibility , take the follwing out
-            if ( !EmptyRgn( region ) )
+            if ( !EmptyRgn( region ) && win->m_macWindowData->m_macHasReceivedFirstActivate )
             {
                                MacRedraw( region , ev->when ) ;
             }
index c3d4ce9709f224f7356a82070aa006f3d1e27c50..f3eb8eca635db5077488bc79d1bd6ce90e0bd374 100644 (file)
@@ -34,7 +34,7 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlCheckBoxProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 9363a6cdda1275826287db0c8a7e0a9f1e8b1984..e9a8357ea58d56d4d334ad1d3d5d4e1ef046734f 100644 (file)
@@ -44,7 +44,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
        
                MacPreControlCreate( parent , id ,  "" , pos , size ,style, validator , name , &bounds , title ) ;
 
-               m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , -12345 , 0 , 
+               m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0 , 
                kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ; 
        
                m_macPopUpMenuHandle =  NewMenu( 1 , "\pPopUp Menu" ) ;
index d765346c5c3f3affd1eba9b676ec27c028b78d66..36e92ad7a388941ba78371ffb5a93e65252efbd8 100644 (file)
@@ -40,7 +40,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
        
                MacPreControlCreate( parent , id ,  "" , pos , size ,style, validator , name , &bounds , title ) ;
        
-               m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , -12345 , 0, 
+               m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0, 
                kControlPopupButtonProc , (long) this ) ; 
        
                m_macPopUpMenuHandle =  NewMenu( 1 , "\pPopUp Menu" ) ;
index 8268b03c8bd330f30ab81154a84394cfbe15087e..4ffb21ccacb5136d1908ff82bb8cd3e46bcb44aa 100644 (file)
@@ -136,6 +136,7 @@ void wxControl::SetLabel(const wxString& title)
 #endif
                ::SetControlTitle( m_macControl , maclabel ) ;
        }
+       Refresh() ;
 }
 
 wxSize wxControl::DoGetBestSize() const
@@ -270,6 +271,7 @@ void wxControl::MacPostControlCreate()
        m_macControlIsShown  = true ;
        MacAdjustControlRect() ;
        wxAssociateControlWithMacControl( m_macControl , this ) ;
+       UMAShowControl( m_macControl ) ;
 }
 
 void wxControl::MacAdjustControlRect() 
@@ -358,15 +360,7 @@ void wxControl::MacSuperChangedPosition()
        
                if ( mac_x != former_mac_x || mac_y != former_mac_y )
                {
-                       {
-                               Rect inval = { former_mac_y , former_mac_x , former_mac_y + m_height , former_mac_x + m_width } ;
-                               InvalWindowRect( rootwindow , &inval ) ;
-                       }
                        UMAMoveControl( m_macControl , mac_x + m_macHorizontalBorder , mac_y + m_macVerticalBorder ) ;
-                       {
-                               Rect inval = { mac_y , mac_x , mac_y + m_height , mac_x + m_width } ;
-                               InvalWindowRect( rootwindow , &inval ) ;
-                       }
                }
                if ( wxrootwindow->IsKindOf( CLASSINFO( wxDialog ) ) )
                {
@@ -494,15 +488,7 @@ void  wxControl::DoSetSize(int x, int y,
        
        if ( mac_x != former_mac_x || mac_y != former_mac_y )
        {
-               {
-                       Rect inval = { former_mac_y , former_mac_x , former_mac_y + m_height , former_mac_x + m_width } ;
-                       InvalWindowRect( macrootwindow, &inval ) ;
-               }
                UMAMoveControl( m_macControl , mac_x + m_macHorizontalBorder , mac_y  + m_macVerticalBorder ) ;
-               {
-                       Rect inval = { mac_y , mac_x , mac_y + m_height , mac_x + m_width } ;
-                       InvalWindowRect(macrootwindow, &inval ) ;
-               }
        }
 
        if ( actualX != former_x || actualY != former_y )
@@ -579,21 +565,10 @@ bool  wxControl::Enable(bool enable)
 
        if ( m_macControl )
        {
-               
-               if ( UMAHasAppearance() )
-               {
-                       if ( enable )
-                               ::ActivateControl( m_macControl ) ;
-                       else
-                               ::DeactivateControl( m_macControl ) ;
-               }
+               if ( enable )
+                   UMAActivateControl( m_macControl ) ;
                else
-               {
-                       if ( enable )
-                               ::HiliteControl( m_macControl , 0 ) ;
-                       else
-                               ::HiliteControl( m_macControl , 255 ) ;
-               }
+                   UMADeactivateControl( m_macControl ) ;
        }
        return TRUE ;
 }
index 67d5dd9c845ff2db660fd5d9efcc6d6cb1a65adf..fe19204a45b3ab89a607246e7cc8a6c75d33d795 100644 (file)
@@ -41,7 +41,7 @@ bool wxGauge::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style & 0xE0FFFFFF /* no borders on mac */ , validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , range, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , range, 
                kControlProgressBarProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 1ed703e186506a9856d770a9922b075181c25dc3..05cc0e249a6927baa3f82ebd2461c8aa253ea602 100644 (file)
@@ -67,7 +67,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , kwxMacListWithVerticalScrollbar , 0 , 0, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , kwxMacListWithVerticalScrollbar , 0 , 0, 
                kControlListBoxProc , (long) this ) ;
        
        long    result ;
index 88b1ef2ce5743a2bc3787ec3558753b2795bcf88..686a969462e84bd2d4357dba6ccd3e04cedafeed 100644 (file)
@@ -116,7 +116,7 @@ bool wxNotebook::Create(wxWindow *parent,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlTabSmallProc , (long) this ) ;
        
        MacPostControlCreate() ;
index b18f098d3c4197e811a6c974acbddbda93a67f81..3c4c07e73e7a3a1ce8a6077f9f6d939bee8f1e29 100644 (file)
@@ -111,7 +111,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, val , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlGroupBoxTextTitleProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 84f2a739cbf139a98d23f2f72ca9071acbbecebd..8ce7963ab1aa30a1bbdffee4f319ead5f6c1f2b4 100644 (file)
@@ -32,7 +32,7 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlRadioButtonProc , (long) this ) ;
        
        MacPostControlCreate() ;
@@ -67,9 +67,11 @@ void wxRadioButton::SetValue(bool val)
 {
        int i;
        wxRadioButton *cycle;
-       
+         if ( GetControlValue( m_macControl ) == val )
+           return ;
+           
    ::SetControlValue( m_macControl , val ) ;
-   
+   Refresh() ;
    if (val) 
    {
                cycle=this->NextInCycle();
@@ -95,7 +97,7 @@ void wxRadioButton::Command (wxCommandEvent & event)
 
 void wxRadioButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) 
 {
-       SetValue(true) ;
+         SetValue(true) ;
     wxCommandEvent event(wxEVT_COMMAND_RADIOBUTTON_SELECTED, m_windowId );
     event.SetEventObject(this);
     event.SetInt( GetValue() );
index fb7a5311ca5939eeff049e04a5823b58471f8a04..0c1a130c78d1a8c10fa2c8ca150437340a9c7502 100644 (file)
@@ -41,7 +41,7 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 100, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 100, 
                kControlScrollBarLiveProc , (long) this ) ;
        
        wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
index ffb6631aca0c0956a0881865dfc665bc138260f0..bce30a4bd1b95bf80694d8483ac266b72a5b7d12 100644 (file)
@@ -133,7 +133,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
     }
   
   m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds ,
-                               title , true ,  value , minValue , maxValue, 
+                               title , false ,  value , minValue , maxValue, 
                                kControlSliderProc +  kControlSliderLiveFeedback + ( ( style & wxSL_AUTOTICKS ) ? kControlSliderHasTickMarks : 0 ) , (long) this ) ;
   
   wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
index 4003a1a3889eafee795cdaa5fa8b56eee4940210..c2b0a7bbc2d0f5614fc9bdeb5199acacd73943d5 100644 (file)
@@ -49,7 +49,7 @@ bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, c
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style,*( (wxValidator*) NULL ) , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 100, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 100, 
                kControlLittleArrowsProc , (long) this ) ;
        
        wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
index e0d8257d0f19ead27aaae78cb869c60810bde958..c50c7d8a28b06d37414f0880f5ef16d01023d90b 100644 (file)
@@ -41,7 +41,7 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id,
        
        MacPreControlCreate( parent , id ,  label , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlGroupBoxTextTitleProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 93644da485219b8deb39dc68db1c826827ded359..f5802a2095e2bf0bbabfd343263cfc0270396ac8 100644 (file)
@@ -54,7 +54,7 @@ bool wxStaticLine::Create( wxWindow *parent,
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlSeparatorLineProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 54821412688f56487af8752ba8fe91edbe432c4c..9d840214d00982a5b5f36e4585d4d500299006d8 100644 (file)
@@ -39,7 +39,7 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons
        
        MacPreControlCreate( parent , id ,  "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
                kControlTabSmallProc , (long) this ) ;
        
        MacPostControlCreate() ;
index 9ff3b8163768cd92a6e51a692673fac401c94142..9a2c72ef33e438996e7e8ad20ba82887894b24fe 100644 (file)
@@ -107,7 +107,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
 
        MacPreControlCreate( parent , id ,  "" , pos , mySize ,style, validator , name , &bounds , title ) ;
 
-       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, 
+       m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , "\p" , false , 0 , 0 , 1, 
                ( style & wxTE_PASSWORD ) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ;
        MacPostControlCreate() ;
 
index 8e1d455afd0d82940218da77543eed335df9ada5..df820b8cb904144ff294af1948f63dd600741069 100644 (file)
@@ -310,7 +310,7 @@ bool wxToolBar::Realize()
                                
                        if ( icon )
                        {
-                               m_macToolHandle = UMANewControl( window , &toolrect , "\p" , true , 0 , 
+                               m_macToolHandle = UMANewControl( window , &toolrect , "\p" , false , 0 , 
                                        behaviour + kControlContentPictHandle , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ;
                                ControlButtonContentInfo info ;
                                
@@ -321,9 +321,10 @@ bool wxToolBar::Realize()
                        }
                        else
                        {
-                                               m_macToolHandle = UMANewControl( window , &toolrect , "\p" , true , 0 , 
+                                               m_macToolHandle = UMANewControl( window , &toolrect , "\p" , false , 0 , 
                                                behaviour  , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ;
                        }
+                       UMAShowControl( m_macToolHandle ) ;
                        m_macToolHandles.Add( m_macToolHandle ) ;
                        tool->m_index = m_macToolHandles.Count() -1 ;
                        if ( !tool->IsEnabled() )
index 4cfea0850597256e32f9aa7294c7ce6f06764d5a..c96a8f93de11dbdf2527c7e8264391a8e3b8847a 100644 (file)
@@ -425,6 +425,7 @@ void                        UMAGetWTitleC( WindowRef inWindowRef , char *title )
 void                   UMAShowWindow( WindowRef inWindowRef ) 
 {
        ShowWindow( inWindowRef ) ;
+
 }
 
 void                   UMAHideWindow( WindowRef inWindowRef ) 
@@ -459,20 +460,20 @@ void                      UMACloseWindow(WindowRef inWindowRef)
 
 void UMAActivateControl( ControlHandle inControl ) 
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
 #if UMA_USE_APPEARANCE
     if ( UMAHasAppearance() )
-    {
+    { 
+      if ( !UMAIsControlActive( inControl ) )
+      {
+        bool visible = IsControlVisible( inControl ) ;
+        if ( visible )
+          SetControlVisibility( inControl , false , false ) ;
         ::ActivateControl( inControl ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , true , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
+       }
     }
     else
 #endif
@@ -484,15 +485,6 @@ void UMAActivateControl( ControlHandle inControl )
     {
     }
 #endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
-DisposeRgn( updateRgn ) ;
-
 }
 
 void UMADrawControl( ControlHandle inControl ) 
@@ -533,111 +525,54 @@ void UMADrawControl( ControlHandle inControl )
 
 void UMAMoveControl( ControlHandle inControl , short x , short y ) 
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
-#if UMA_USE_APPEARANCE
     if ( UMAHasAppearance() )
     {
+        bool visible = UMAIsControlVisible( inControl ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , false , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
         ::MoveControl( inControl , x , y ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , true , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
     }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGAMoveControl( inControl , x ,y  ) ;
-    }
-#else
-    {
-    }
-#endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
 }
 
 void UMASizeControl( ControlHandle inControl , short x , short y ) 
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
-#if UMA_USE_APPEARANCE
     if ( UMAHasAppearance() )
     {
+        bool visible = UMAIsControlVisible( inControl ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , false , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
         ::SizeControl( inControl , x , y ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , true , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
     }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGASizeControl( inControl , x ,y  ) ;
-    }
-#else
-    {
-    }
-#endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
-
 }
 
 void UMADeactivateControl( ControlHandle inControl ) 
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
-#if UMA_USE_APPEARANCE
     if ( UMAHasAppearance() )
     {
+      if ( UMAIsControlActive( inControl ) )
+      {
+        bool visible = IsControlVisible( inControl ) ;
+        if ( visible )
+          SetControlVisibility( inControl , false , false ) ;
         ::DeactivateControl( inControl ) ;
+        if ( visible ) {
+          SetControlVisibility( inControl , true , false ) ;
+          InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
+        }
+       }
     }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGADeactivateControl( inControl ) ;
-    }
-#else
-    {
-    }
-#endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
 }
 
 void UMASetThemeWindowBackground              (WindowRef                               inWindow,
@@ -733,16 +668,6 @@ void UMADisposeControl (ControlHandle                      theControl)
 void UMAHiliteControl  (ControlHandle                  inControl,
                         ControlPartCode                hiliteState)
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
     if ( UMAHasAppearance() )
     {
         ::HiliteControl( inControl , hiliteState ) ;
@@ -751,45 +676,23 @@ void UMAHiliteControl     (ControlHandle                  inControl,
     {
         ::HiliteControl( inControl , hiliteState ) ;
     }
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
 }
 
+// shows the control and adds the region to the update region
 void UMAShowControl                                            (ControlHandle                  inControl)
 {
-    WindowRef theWindow = GetControlOwner(inControl) ;
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-       Point zero = { 0 , 0 } ;
-       LocalToGlobal( &zero ) ;
-       OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
     if ( UMAHasAppearance() )
     {
-        ::ShowControl( inControl ) ;
+        SetControlVisibility( inControl , true , false ) ;
+        InvalWindowRect(GetControlOwner(inControl),&(**inControl).contrlRect ) ;
     }
     else
     {
-        ::ShowControl( inControl ) ;
+        (**inControl).contrlVis = 255 ;
     }
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-       DisposeRgn( updateRgn ) ;
-
 }
 
-
+// Hides the control and adds the region to the update region
 void UMAHideControl                                            (ControlHandle                  inControl)
 {
     if ( UMAHasAppearance() )
@@ -841,7 +744,13 @@ bool UMAIsControlVisible                           (ControlHandle                  inControl)
        {
        return IsControlVisible( inControl ) ;
    }
+   else
 #endif
+  {
+#if !TARGET_CARBON
+    return (**inControl).contrlVis == 255 ;
+#endif
+  }
        return true ;
 }
 
@@ -1538,5 +1447,6 @@ OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState )
   {
   }
 #endif
+  return noErr ;
 }
 
index 725202751522545f5206ecba78ea752a2e9fb001..3a5cfcd895c14d3c66ffcdce024049d65c746f87 100644 (file)
@@ -152,6 +152,20 @@ void wxWindow::Init()
 // Destructor
 wxWindow::~wxWindow()
 {
+    // deleting a window while it is shown invalidates the region
+    if ( IsShown() ) {
+        wxWindow* iter = this ;
+        while( iter ) {
+            if ( iter->m_macWindowData )
+            {
+                Refresh() ;
+                break ;
+            }
+            iter = iter->GetParent() ;
+            
+        }
+    }
+    
     m_isBeingDeleted = TRUE;
 
        if ( s_lastMouseWindow == this )
@@ -754,11 +768,7 @@ bool wxWindow::Show(bool show)
        }
        MacSuperShown( show ) ;
        Refresh() ;
-    /*
-    // this will be done by the activate event
-       if(m_macWindowData)
-               MacUpdateImmediately() ;
-    */
+
     return TRUE;
 }
 
@@ -899,6 +909,9 @@ void wxWindow::MacEraseBackground( Rect *rect )
 
 void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
 {
+//    if ( !IsShown() )
+//        return ;
+        
        wxMacDrawingHelper focus( this ) ;
        if ( focus.Ok() )
        {
@@ -1143,6 +1156,7 @@ void  wxWindow::MacCreateRealWindow( const wxString& title,
        UMACreateRootControl( m_macWindowData->m_macWindow , &m_macWindowData->m_macRootControl ) ;
 
        m_macWindowData->m_macFocus = NULL ;
+       m_macWindowData->m_macHasReceivedFirstActivate = true ;
 }
 
 void wxWindow::MacPaint( wxPaintEvent &event ) 
@@ -1694,8 +1708,12 @@ void wxWindow::MacFireMouseEvent( EventRecord *ev )
                                else
                                        event.SetEventType(wxEVT_LEFT_DCLICK ) ;
                        }
+                   lastWhen = 0 ;
+               }
+               else
+               {
+                   lastWhen = ev->when ;
                }
-               lastWhen = ev->when ;
                lastWhere = localwhere ;
        }
 
@@ -1768,15 +1786,18 @@ void wxWindow::MacMouseMoved( EventRecord *ev , short part)
 }
 void wxWindow::MacActivate( EventRecord *ev , bool inIsActivating )
 {
+    if ( !m_macWindowData->m_macHasReceivedFirstActivate )
+        m_macWindowData->m_macHasReceivedFirstActivate = true ;
+    
        wxActivateEvent event(wxEVT_ACTIVATE, inIsActivating , m_windowId);
        event.m_timeStamp = ev->when ;
        event.SetEventObject(this);
        
        GetEventHandler()->ProcessEvent(event);
        
+    Refresh() ;
        UMAHighlightAndActivateWindow( m_macWindowData->m_macWindow , inIsActivating ) ;
-       Refresh() ;
-       MacUpdateImmediately() ;
+//     MacUpdateImmediately() ;
 }
 
 void wxWindow::MacRedraw( RgnHandle updatergn , long time)
@@ -1942,7 +1963,7 @@ void wxWindow::MacUpdateImmediately()
                    GetPortVisibleRegion( GetWindowPort( window ), region );
 
                                // if windowshade gives incompatibility , take the follwing out
-                   if ( !EmptyRgn( region ) )
+                   if ( !EmptyRgn( region ) && win->m_macWindowData->m_macHasReceivedFirstActivate )
                    {
                                        win->MacRedraw( region , wxTheApp->sm_lastMessageTime ) ;
                    }
@@ -1973,7 +1994,7 @@ void wxWindow::MacUpdate( EventRecord *ev )
             GetPortVisibleRegion( GetWindowPort( window ), region );
 
                        // if windowshade gives incompatibility , take the follwing out
-            if ( !EmptyRgn( region ) )
+            if ( !EmptyRgn( region ) && win->m_macWindowData->m_macHasReceivedFirstActivate )
             {
                                MacRedraw( region , ev->when ) ;
             }