protected:
// For controls like radiobuttons which are really composite
ControlHandle m_macControl ;
+ bool m_macControlIsShown ;
wxList m_subControls;
int m_macHorizontalBorder ;
int m_macVerticalBorder ;
static long MacRemoveBordersFromStyle( long style ) ;
virtual void MacSuperChangedPosition() ;
virtual void MacSuperShown( bool show ) ;
+ bool MacIsReallyShown() const ;
/*
bool MacSetupFocusPort() ;
bool MacSetupDrawingPort() ;
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 ) ;
}
{
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 ;
+ }
}
}
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 ;
}
{
if ( UMAHasAppearance() )
{
- ::HideControl( theControl ) ;
+ ::HideControl( theControl ) ;
}
else
{
- ::HideControl( theControl ) ;
+ ::HideControl( theControl ) ;
}
}
{
// bool isHighlighted = IsWindowHighlited( inWindowRef ) ;
// if ( inActivate != isHightlited )
- HiliteWindow( inWindowRef , inActivate ) ;
- ControlHandle control = NULL ;
- UMAGetRootControl( inWindowRef , & control ) ;
- if ( control )
- {
- if ( inActivate )
- UMAActivateControl( control ) ;
- else
- UMADeactivateControl( control ) ;
- }
+ GrafPtr port ;
+ GetPort( &port ) ;
+#if TARGET_CARBON
+ SetPort( GetWindowPort( inWindowRef ) ) ;
+#else
+ SetPort( inWindowRef ) ;
+#endif
+ SetOrigin( 0 , 0 ) ;
+ HiliteWindow( inWindowRef , inActivate ) ;
+ ControlHandle control = NULL ;
+ UMAGetRootControl( inWindowRef , & control ) ;
+ if ( control )
+ {
+ if ( inActivate )
+ UMAActivateControl( control ) ;
+ else
+ UMADeactivateControl( control ) ;
+ }
+ SetPort( port ) ;
+ wxDC::MacInvalidateSetup() ;
}
}
OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState )
#include "wx/notebook.h"
#include "wx/tabctrl.h"
#include "wx/tooltip.h"
+#include "wx/statusbr.h"
// TODO remove the line below, just for lookup-up convenience CS
#include "wx/window.h"
m_width = WidthDefault( size.x );
m_height = HeightDefault( size.y ) ;
- if ( ! IsKindOf( CLASSINFO ( wxControl ) ) )
+ if ( ! IsKindOf( CLASSINFO ( wxControl ) ) && ! IsKindOf( CLASSINFO( wxStatusBar ) ) )
{
MacCreateScrollBars( style ) ;
}
if ( doResize )
::SizeWindow(m_macWindowData->m_macWindow, m_width, m_height , true);
- // the OS takes care of invalidating and erasing
+ // the OS takes care of invalidating and erasing the new area
+ // we have erased the old one
if ( IsKindOf( CLASSINFO( wxFrame ) ) )
{
}
}
+bool wxWindow::MacIsReallyShown() const
+{
+ bool status = m_isShown ;
+ wxWindow * win = this ;
+ while ( status && win->m_parent != NULL )
+ {
+ win = win->m_parent ;
+ status = win->m_isShown ;
+ }
+ return status ;
+}
+
int wxWindow::GetCharHeight() const
{
wxClientDC dc ( (wxWindow*)this ) ;
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 ) ;
}
{
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 ;
+ }
}
}
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 ;
}
{
if ( UMAHasAppearance() )
{
- ::HideControl( theControl ) ;
+ ::HideControl( theControl ) ;
}
else
{
- ::HideControl( theControl ) ;
+ ::HideControl( theControl ) ;
}
}
{
// bool isHighlighted = IsWindowHighlited( inWindowRef ) ;
// if ( inActivate != isHightlited )
- HiliteWindow( inWindowRef , inActivate ) ;
- ControlHandle control = NULL ;
- UMAGetRootControl( inWindowRef , & control ) ;
- if ( control )
- {
- if ( inActivate )
- UMAActivateControl( control ) ;
- else
- UMADeactivateControl( control ) ;
- }
+ GrafPtr port ;
+ GetPort( &port ) ;
+#if TARGET_CARBON
+ SetPort( GetWindowPort( inWindowRef ) ) ;
+#else
+ SetPort( inWindowRef ) ;
+#endif
+ SetOrigin( 0 , 0 ) ;
+ HiliteWindow( inWindowRef , inActivate ) ;
+ ControlHandle control = NULL ;
+ UMAGetRootControl( inWindowRef , & control ) ;
+ if ( control )
+ {
+ if ( inActivate )
+ UMAActivateControl( control ) ;
+ else
+ UMADeactivateControl( control ) ;
+ }
+ SetPort( port ) ;
+ wxDC::MacInvalidateSetup() ;
}
}
OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState )
#include "wx/notebook.h"
#include "wx/tabctrl.h"
#include "wx/tooltip.h"
+#include "wx/statusbr.h"
// TODO remove the line below, just for lookup-up convenience CS
#include "wx/window.h"
m_width = WidthDefault( size.x );
m_height = HeightDefault( size.y ) ;
- if ( ! IsKindOf( CLASSINFO ( wxControl ) ) )
+ if ( ! IsKindOf( CLASSINFO ( wxControl ) ) && ! IsKindOf( CLASSINFO( wxStatusBar ) ) )
{
MacCreateScrollBars( style ) ;
}
if ( doResize )
::SizeWindow(m_macWindowData->m_macWindow, m_width, m_height , true);
- // the OS takes care of invalidating and erasing
+ // the OS takes care of invalidating and erasing the new area
+ // we have erased the old one
if ( IsKindOf( CLASSINFO( wxFrame ) ) )
{
}
}
+bool wxWindow::MacIsReallyShown() const
+{
+ bool status = m_isShown ;
+ wxWindow * win = this ;
+ while ( status && win->m_parent != NULL )
+ {
+ win = win->m_parent ;
+ status = win->m_isShown ;
+ }
+ return status ;
+}
+
int wxWindow::GetCharHeight() const
{
wxClientDC dc ( (wxWindow*)this ) ;