-
- // Adjust the controls size and position
- wxPoint pos(m_x, m_y);
- wxSize best_size( DoGetBestSize() );
- wxSize new_size( m_width, m_height );
-
- m_x = m_y = m_width = m_height = -1; // Forces SetSize to move/size the control
-
- if (new_size.x == -1) {
+ wxAssociateControlWithMacControl( (ControlHandle) m_macControl , this ) ;
+ if ( wxMacSetupControlBackgroundUPP == NULL )
+ {
+ wxMacSetupControlBackgroundUPP = NewControlColorUPP( wxMacSetupControlBackground ) ;
+ }
+ if ( wxMacControlActionUPP == NULL )
+ {
+ wxMacControlActionUPP = NewControlDefUPP( wxMacControlDefinition ) ;
+ }
+ // The following block of code is responsible for crashes when switching
+ // back to windows, which can be seen in the dialogs sample.
+ // It is disabled until a proper solution can be found.
+#if 0
+#if TARGET_CARBON
+/*
+ only working under classic carbon
+ m_macControlAction = *(**(ControlHandle)m_macControl).contrlDefProc ;
+ (**(ControlHandle)m_macControl).contrlDefProc = (Handle) &wxMacControlActionUPP ;
+*/
+#else
+ m_macControlAction = *(**(ControlHandle)m_macControl).contrlDefProc ;
+
+ cdefHandle cdef ;
+ cdef = (cdefHandle) NewHandle( sizeof(cdefRec) ) ;
+ if ( (**(ControlHandle)m_macControl).contrlDefProc != NULL )
+ {
+ (**cdef).instruction = 0x4EF9; /* JMP instruction */
+ (**cdef).function = (void(*)()) wxMacControlActionUPP;
+ (**(ControlHandle)m_macControl).contrlDefProc = (Handle) cdef ;
+ }
+#endif
+#endif
+ SetControlColorProc( (ControlHandle) m_macControl , wxMacSetupControlBackgroundUPP ) ;
+
+ // Adjust the controls size and position
+ wxPoint pos(m_x, m_y);
+ wxSize best_size( DoGetBestSize() );
+ wxSize new_size( m_width, m_height );
+
+ m_x = m_y = m_width = m_height = -1; // Forces SetSize to move/size the control
+
+ if (new_size.x == -1) {