class wxMacControl
{
public :
- wxMacControl()
+ wxMacControl(wxWindow* peer)
{
+ m_peer = peer ;
m_controlRef = NULL ;
}
- wxMacControl( ControlRef control )
+ wxMacControl( wxWindow* peer , ControlRef control )
{
+ m_peer = peer ;
m_controlRef = control ;
}
- wxMacControl( WXWidget control )
+ wxMacControl( wxWindow* peer , WXWidget control )
{
+ m_peer = peer ;
m_controlRef = (ControlRef) control ;
}
+
virtual ~wxMacControl()
{
}
// invalidates this control and all children
virtual void InvalidateWithChildren() ;
virtual void SetDrawingEnabled( bool enable ) ;
+#ifdef __WXMAC_OSX__
virtual bool GetNeedsDisplay() const ;
virtual void SetNeedsDisplay( bool needsDisplay , RgnHandle where = NULL ) ;
-
+#endif
virtual void ScrollRect( const wxRect &rect , int dx , int dy ) ;
virtual void GetRect( Rect *r ) ;
ControlRef m_controlRef ;
wxFont m_font ;
long m_windowStyle ;
+ wxWindow* m_peer ;
} ;
#if wxMAC_USE_CORE_GRAPHICS
wxMacCreateBitmapButton( &info , m_bmpNormal ) ;
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl( this ) ;
verify_noerr ( CreateBevelButtonControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , CFSTR("") ,
(( style & wxBU_AUTODRAW ) ? kControlBevelButtonSmallBevel : kControlBevelButtonNormalBevel ) ,
kControlBehaviorOffsetContents , &info , 0 , 0 , 0 , m_peer->GetControlRefAddr() ) );
m_label = label ;
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
if ( id == wxID_HELP )
{
ControlButtonContentInfo info ;
maxValue = 2 /* kControlCheckboxMixedValue */;
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr( CreateCheckBoxControl(MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds ,
CFSTR("") , 0 , false , m_peer->GetControlRefAddr() ) );
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr( ::CreateDataBrowserControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, kDataBrowserListView , m_peer->GetControlRefAddr() ) );
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr ( CreatePopupButtonControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , CFSTR("") ,
-12345 , false /* no variable width */ , 0 , 0 , 0 , m_peer->GetControlRefAddr() ) );
//hiRect.size.height = bounds.bottom - bounds.top;
//printf("left = %d, right = %d, top = %d, bottom = %d\n", bounds.left, bounds.right, bounds.top, bounds.bottom);
//printf("x = %d, y = %d, width = %d, height = %d\n", hibounds.origin.x, hibounds.origin.y, hibounds.size.width, hibounds.size.height);
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr( HIComboBoxCreate( &hiRect, CFSTR(""), NULL, NULL, kHIComboBoxStandardAttributes, *m_peer ) );
if ( win )
{
- int x = 0 , y = 0;
- win->MacWindowToRootWindow( &x,&y ) ;
- // get area including focus rect
- CopyRgn( (RgnHandle) ((wxWindow*)win)->MacGetVisibleRegion(true).GetWXHRGN() , m_newClip ) ;
- if ( !EmptyRgn( m_newClip ) )
- OffsetRgn( m_newClip , x , y ) ;
-
+ // guard against half constructed objects, this just leads to a empty clip
+ if( win->GetPeer() )
+ {
+ int x = 0 , y = 0;
+ win->MacWindowToRootWindow( &x,&y ) ;
+ // get area including focus rect
+ CopyRgn( (RgnHandle) ((wxWindow*)win)->MacGetVisibleRegion(true).GetWXHRGN() , m_newClip ) ;
+ if ( !EmptyRgn( m_newClip ) )
+ OffsetRgn( m_newClip , x , y ) ;
+ }
SetClip( m_newClip ) ;
}
}
}
*/
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr ( CreateProgressBarControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds ,
GetValue() , 0 , GetRange() , false /* not indeterminate */ , m_peer->GetControlRefAddr() ) );
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr( ::CreateDataBrowserControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, kDataBrowserListView , m_peer->GetControlRefAddr() ) );
DataBrowserSelectionFlags options = kDataBrowserDragSelect ;
tabsize = kControlSizeSmall;
}
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr ( CreateTabsControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds ,
tabsize , tabstyle, 0, NULL, m_peer->GetControlRefAddr() ) );
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr ( CreateRadioButtonControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , CFSTR("") ,
0 , false /* no autotoggle */ , m_peer->GetControlRefAddr() ) );
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr ( CreateScrollBarControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds ,
0 , 0 , 100 , 1 , true /* liveTracking */ , wxMacLiveScrollbarActionUPP , m_peer->GetControlRefAddr() ) );
while (tickMarks > 20)
tickMarks /= 5; //keep the number of tickmarks from becoming unwieldly
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr ( CreateSliderControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds ,
value , minValue , maxValue , kControlSliderPointsDownOrRight , tickMarks , true /* liveTracking */ ,
wxMacLiveScrollbarActionUPP , m_peer->GetControlRefAddr() ) );
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr ( CreateLittleArrowsControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , 0 , m_min , m_max , 1 ,
m_peer->GetControlRefAddr() ) );
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr(CreateGroupBoxControl(MAC_WXHWND(parent->MacGetTopLevelWindowRef()),&bounds, CFSTR("") ,
true /*primary*/ , m_peer->GetControlRefAddr() ) ) ;
return false;
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr(CreateSeparatorControl(MAC_WXHWND(parent->MacGetTopLevelWindowRef()),&bounds, m_peer->GetControlRefAddr() ) ) ;
MacPostControlCreate(pos,size) ;
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
wxMacCFStringHolder str(m_label,m_font.GetEncoding() ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr(CreateStaticTextControl(MAC_WXHWND(parent->MacGetTopLevelWindowRef()),&bounds, str ,
NULL , m_peer->GetControlRefAddr() ) ) ;
tabsize = kControlSizeSmall;
}
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr ( CreateTabsControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds ,
tabsize , tabstyle, 0, NULL, m_peer->GetControlRefAddr() ) );
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
- m_peer = new wxMacControl() ;
+ m_peer = new wxMacControl(this) ;
verify_noerr ( CreateBevelButtonControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , CFSTR("") ,
kControlBevelButtonNormalBevel , kControlBehaviorToggles , NULL , 0 , 0 , 0 , m_peer->GetControlRefAddr() ) );