void wxWindowMac::Init()
{
- // generic
- InitBase();
-
- m_isBeingDeleted = FALSE;
m_backgroundTransparent = FALSE;
// as all windows are created with WS_VISIBLE style...
m_hScrollBar = NULL ;
m_vScrollBar = NULL ;
-
- m_label = wxEmptyString;
}
// Destructor
gFocusWindow = NULL ;
}
- // CS: copied from MSW :
- // VS: destroy children first and _then_ detach *this from its parent.
- // If we'd do it the other way around, children wouldn't be able
- // find their parent frame (see above).
DestroyChildren();
- if ( m_parent )
- m_parent->RemoveChild(this);
-
// delete our drop target if we've got one
#if wxUSE_DRAG_AND_DROP
if ( m_dropTarget != NULL )
MacCreateScrollBars( style ) ;
}
#endif
+
+ wxWindowCreateEvent event(this);
+ GetEventHandler()->ProcessEvent(event);
+
return TRUE;
}
bool partialRepaint = false ;
- if ( HasFlag(wxNO_FULL_REPAINT_ON_RESIZE) )
+ if ( !HasFlag(wxFULL_REPAINT_ON_RESIZE) )
{
wxPoint oldPos( m_x , m_y ) ;
wxPoint newPos( actualX , actualY ) ;
{
if( IsTopLevel() )
return ;
+
+ int major,minor;
+ wxGetOsVersion( &major, &minor );
RGBColor white = { 0xFFFF, 0xFFFF , 0xFFFF } ;
- RGBColor black = { 0x0000, 0x0000 , 0x0000 } ;
RGBColor face = { 0xDDDD, 0xDDDD , 0xDDDD } ;
- RGBColor shadow = { 0x4444, 0x4444 , 0x4444 } ;
+
+ RGBColor darkShadow = { 0x0000, 0x0000 , 0x0000 } ;
+ RGBColor lightShadow = { 0x4444, 0x4444 , 0x4444 } ;
+ // OS X has lighter border edges than classic:
+ if (major >= 10)
+ {
+ darkShadow.red = 0x8E8E;
+ darkShadow.green = 0x8E8E;
+ darkShadow.blue = 0x8E8E;
+ lightShadow.red = 0xBDBD;
+ lightShadow.green = 0xBDBD;
+ lightShadow.blue = 0xBDBD;
+ }
+
PenNormal() ;
if (HasFlag(wxRAISED_BORDER) || HasFlag( wxSUNKEN_BORDER) || HasFlag(wxDOUBLE_BORDER) )
{
#if wxMAC_USE_THEME_BORDER
- Rect rect = { top , left , m_height + top , m_width + left } ;
- SInt32 border = 0 ;
- /*
- GetThemeMetric( kThemeMetricListBoxFrameOutset , &border ) ;
- InsetRect( &rect , border , border );
- DrawThemeListBoxFrame(&rect,IsEnabled() ? kThemeStateActive : kThemeStateInactive) ;
- */
+ Rect rect = { top , left , m_height + top , m_width + left } ;
+ SInt32 border = 0 ;
+ /*
+ GetThemeMetric( kThemeMetricListBoxFrameOutset , &border ) ;
+ InsetRect( &rect , border , border );
+ DrawThemeListBoxFrame(&rect,IsEnabled() ? kThemeStateActive : kThemeStateInactive) ;
+ */
DrawThemePrimaryGroup(&rect ,IsEnabled() ? kThemeStateActive : kThemeStateInactive) ;
#else
LineTo( left + m_width - 3 , top + m_height - 3 );
LineTo( left + m_width - 3 , top + 2 );
- RGBForeColor( sunken ? &face : &black );
+ RGBForeColor( sunken ? &face : &darkShadow );
MoveTo( left + 0 , top + m_height - 1 );
LineTo( left + m_width - 1 , top + m_height - 1 );
LineTo( left + m_width - 1 , top + 0 );
- RGBForeColor( sunken ? &shadow : &white );
+ RGBForeColor( sunken ? &lightShadow : &white );
MoveTo( left + 1 , top + m_height - 3 );
LineTo( left + 1, top + 1 );
LineTo( left + m_width - 3 , top + 1 );
- RGBForeColor( sunken ? &white : &shadow );
+ RGBForeColor( sunken ? &white : &lightShadow );
MoveTo( left + 1 , top + m_height - 2 );
LineTo( left + m_width - 2 , top + m_height - 2 );
LineTo( left + m_width - 2 , top + 1 );
- RGBForeColor( sunken ? &black : &face );
+ RGBForeColor( sunken ? &darkShadow : &face );
MoveTo( left + 2 , top + m_height - 4 );
LineTo( left + 2 , top + 2 );
LineTo( left + m_width - 4 , top + 2 );
}
else if (HasFlag(wxSIMPLE_BORDER))
{
- Rect rect = { top , left , m_height + top , m_width + left } ;
- RGBForeColor( &black ) ;
+ Rect rect = { top , left , m_height + top , m_width + left } ;
+ RGBForeColor( &darkShadow ) ;
FrameRect( &rect ) ;
}
}
if( dx == 0 && dy ==0 )
return ;
- wxClientDC dc(this) ;
- wxMacPortSetter helper(&dc) ;
{
+ wxClientDC dc(this) ;
+ wxMacPortSetter helper(&dc) ;
+
int width , height ;
GetClientSize( &width , &height ) ;
GetWindowUpdateRgn( rootWindow , formerUpdateRgn ) ;
Point pt = {0,0} ;
LocalToGlobal( &pt ) ;
- OffsetRgn( updateRgn , -pt.h , -pt.v ) ;
+ OffsetRgn( formerUpdateRgn , -pt.h , -pt.v ) ;
SectRgn( formerUpdateRgn , scrollRgn , formerUpdateRgn ) ;
if ( !EmptyRgn( formerUpdateRgn ) )
{
bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
{
+ //In case a third-party component changed the port...
+ wxMacPortStateHelper help( (GrafPtr) GetWindowPort( (WindowRef) MacGetRootWindow()) ) ;
+ wxMacWindowClipper clip (this);
+
if ((event.m_x < m_x) || (event.m_y < m_y) ||
(event.m_x > (m_x + m_width)) || (event.m_y > (m_y + m_height)))
return FALSE;
::SetPort( UMAGetWindowPort( rootWindow ) ) ;
Point pt = {0,0} ;
LocalToGlobal( &pt ) ;
- ::GlobalToLocal( &pt ) ;
::SetPort( port ) ;
OffsetRgn( updateRgn , -pt.h , -pt.v ) ;
// translate to window local coordinates
DisposeRgn( ownUpdateRgn ) ;
if ( !m_updateRegion.Empty() )
{
+ wxWindowList hiddenWindows ;
+ for (wxWindowListNode *node = GetChildren().GetFirst(); node; node = node->GetNext())
+ {
+ wxControl *child = wxDynamicCast( ( wxWindow*)node->GetData() , wxControl ) ;
+
+ if ( child && child->MacGetRootWindow() == window && child->IsShown() && child->GetMacControl() )
+ {
+ SetControlVisibility( (ControlHandle) child->GetMacControl() , false , false ) ;
+ hiddenWindows.Append( child ) ;
+ }
+ }
+
wxPaintEvent event;
event.m_timeStamp = time ;
event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event);
+
+ for (wxWindowListNode *node = hiddenWindows.GetFirst(); node; node = node->GetNext())
+ {
+ wxControl *child = wxDynamicCast( ( wxWindow*)node->GetData() , wxControl ) ;
+
+ if ( child && child->GetMacControl() )
+ {
+ SetControlVisibility( (ControlHandle) child->GetMacControl() , true , false ) ;
+ }
+ }
}
}