diff --git a/src/mac/cdef/extcdef.c b/src/mac/cdef/extcdef.c new file mode 100644 index 0000000000..0e21b457a1 --- /dev/null +++ b/src/mac/cdef/extcdef.c @@ -0,0 +1,29 @@ +#include "extcdef.h" + +/************************************************************************* + + main + +*************************************************************************/ + +pascal SInt32 main(SInt16 varCode , ControlHandle theControl , ControlDefProcMessage message, SInt32 param ) +{ + long returnValue = 0L; + char state = HGetState((Handle)theControl); + + if ( message != initCntl ) + { + ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ; + if ( info ) + { + returnValue = info->defProc( info->procID, theControl, message, param) ; + } + } + else + { + (**theControl).contrlRfCon = NULL ; + } + HSetState((Handle)theControl,state); + + return(returnValue); /* tell them what happened */ +} diff --git a/src/mac/cdef/extcdef.h b/src/mac/cdef/extcdef.h new file mode 100644 index 0000000000..2c7bf88d3b --- /dev/null +++ b/src/mac/cdef/extcdef.h @@ -0,0 +1,21 @@ +#pragma once + +#include + +#define kExtCDEFID 128 // resource id of our CDEF resource +const long kExtCDEFMagic = 0xFEEDFEED ; +typedef struct ExtCDEFInfo +{ + ControlDefProcPtr defProc ; // this must always be the lowest element + long magic ; + long contrlRfCon ; + ControlHandle containerControl ; + Handle children ; + ControlFontStyleRec fontStyle ; + Boolean hasFocus ; + SInt16 procID ; + long privateData ; +} ExtCDEFInfo ; + +void NewExtCDEFInfo( ControlHandle theControl , ControlDefProcPtr defproc , SInt16 procID , long refcon ) ; +void DisposeExtCDEFInfo( ControlHandle theControl) ; diff --git a/src/mac/cdef/extcdef.mcp b/src/mac/cdef/extcdef.mcp new file mode 100644 index 0000000000..ecd61b8d7f Binary files /dev/null and b/src/mac/cdef/extcdef.mcp differ