X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03e11df5470fd64d9d9a669d0b50b84c2d714736..c257d44dd201f502a0e9a4bcff95958c6cd28182:/src/mac/carbon/control.cpp diff --git a/src/mac/carbon/control.cpp b/src/mac/carbon/control.cpp index 3e5679a826..8268b03c8b 100644 --- a/src/mac/carbon/control.cpp +++ b/src/mac/carbon/control.cpp @@ -16,6 +16,7 @@ #include "wx/control.h" #include "wx/panel.h" #include "wx/app.h" +#include "wx/dc.h" #include "wx/notebook.h" #include "wx/tabctrl.h" #include "wx/radiobox.h" @@ -69,7 +70,7 @@ wxControl::wxControl() if ( wxMacLiveScrollbarActionUPP == NULL ) { -#ifdef __UNIX__ +#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) wxMacLiveScrollbarActionUPP = NewControlActionUPP( wxMacLiveScrollbarActionProc ); #else wxMacLiveScrollbarActionUPP = NewControlActionProc( wxMacLiveScrollbarActionProc ) ; @@ -266,6 +267,7 @@ void wxControl::MacPostControlCreate() ControlHandle container = GetParent()->MacGetContainerForEmbedding() ; wxASSERT_MSG( container != NULL , "No valid mac container control" ) ; ::UMAEmbedControl( m_macControl , container ) ; + m_macControlIsShown = true ; MacAdjustControlRect() ; wxAssociateControlWithMacControl( m_macControl , this ) ; } @@ -301,6 +303,8 @@ void wxControl::MacAdjustControlRect() if ( IsKindOf( CLASSINFO( wxButton ) ) ) { m_width = m_label.Length() * 8 + 12 ; + if ( m_width < 70 ) + m_width = 70 ; } else if ( IsKindOf( CLASSINFO( wxStaticText ) ) ) { @@ -416,12 +420,19 @@ void wxControl::MacSuperShown( bool show ) { if ( !show ) { - ::UMAHideControl( m_macControl ) ; + if ( m_macControlIsShown ) + { + ::UMAHideControl( m_macControl ) ; + m_macControlIsShown = false ; + } } else { - if ( m_isShown ) + if ( MacIsReallyShown() && !m_macControlIsShown ) + { ::UMAShowControl( m_macControl ) ; + m_macControlIsShown = true ; + } } } @@ -541,10 +552,22 @@ bool wxControl::Show(bool show) if ( m_macControl ) { - if ( show ) - ::UMAShowControl( m_macControl ) ; + if ( !show ) + { + if ( m_macControlIsShown ) + { + ::UMAHideControl( m_macControl ) ; + m_macControlIsShown = false ; + } + } else - ::UMAHideControl( m_macControl ) ; + { + if ( MacIsReallyShown() && !m_macControlIsShown ) + { + ::UMAShowControl( m_macControl ) ; + m_macControlIsShown = true ; + } + } } return TRUE ; } @@ -641,8 +664,9 @@ void wxControl::OnPaint(wxPaintEvent& event) wxMacDrawingHelper help( win ) ; // the mac control manager always assumes to have the origin at 0,0 SetOrigin( 0 , 0 ) ; + - bool hasTabBehind = false ; + bool hasTabBehind = false ; wxWindow* parent = GetParent() ; while ( parent ) { @@ -661,7 +685,7 @@ void wxControl::OnPaint(wxPaintEvent& event) parent = parent->GetParent() ; } - + UMADrawControl( m_macControl ) ; UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } @@ -739,10 +763,12 @@ void wxControl::OnMouseEvent( wxMouseEvent &event ) controlpart = FindControl( localwhere , window , &control ) ; { + /* if ( AcceptsFocus() && FindFocus() != this ) { SetFocus() ; } + */ if ( control && UMAIsControlActive( control ) ) { {