diff --git a/include/wx/mac/uma.h b/include/wx/mac/uma.h index faf1206158..c0260916c9 100644 --- a/include/wx/mac/uma.h +++ b/include/wx/mac/uma.h @@ -228,12 +228,23 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) ; #define GetPortVisibleRegion( p, r ) CopyRgn( p->visRgn , r ) #define GetQDGlobalsWhite( a ) (&((*a) = qd.white)) #define GetQDGlobalsBlack( a ) (&((*a) = qd.black)) -#define GetQDGlobalsScreenBits( a ) (*a) = qd.screenBits +#define GetQDGlobalsScreenBits( a ) ((*a) = qd.screenBits) #define GetQDGlobalsArrow( a ) (&((*a) = qd.arrow)) #define GetControlBounds( c , b ) &((*b) = (**c).contrlRect ) #define GetPortBitMapForCopyBits( p ) ((BitMap*) &(((CGrafPtr)p)->portPixMap )) -#define GetControlOwner( control ) (**control).contrlOwner +#define GetControlOwner( control ) ((**control).contrlOwner) #define InvalWindowRgn( window , rgn ) InvalRgn( rgn ) +#define GetPortPenMode( p ) (p->pnMode) +#define SetPortPenMode( p , mode ) (p->pnMode = mode ) +// control manager + +#define GetControlReference( control ) ((**control).contrlRfCon) + +// list manager + +#define SetListSelectionFlags( list , options ) (**list).selFlags = options +#define GetListRefCon( list ) (**list).refCon + #endif #if TARGET_CARBON #define GetWindowUpdateRgn( inWindow , updateRgn ) GetWindowRegion( inWindow , kWindowUpdateRgn, updateRgn ) diff --git a/src/mac/aga.cpp b/src/mac/aga.cpp index 76e2d9505b..64827558b0 100644 --- a/src/mac/aga.cpp +++ b/src/mac/aga.cpp @@ -4,7 +4,7 @@ #if 0 // TO BE REMOVED SOON -#include +//#include #include pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param); diff --git a/src/mac/carbon/aga.cpp b/src/mac/carbon/aga.cpp index 76e2d9505b..64827558b0 100644 --- a/src/mac/carbon/aga.cpp +++ b/src/mac/carbon/aga.cpp @@ -4,7 +4,7 @@ #if 0 // TO BE REMOVED SOON -#include +//#include #include pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param); diff --git a/src/mac/carbon/corersrc.r b/src/mac/carbon/corersrc.r index 0bc5febd8c..4171a8faec 100644 --- a/src/mac/carbon/corersrc.r +++ b/src/mac/carbon/corersrc.r @@ -391,7 +391,7 @@ resource 'ldes' ( 128 ) 0 , hasVertScroll , noHorizScroll , - 128 , + 0 , noGrowSpace , } } ; diff --git a/src/mac/carbon/listbox.cpp b/src/mac/carbon/listbox.cpp index 502394e18a..f6c1403b1c 100644 --- a/src/mac/carbon/listbox.cpp +++ b/src/mac/carbon/listbox.cpp @@ -21,7 +21,7 @@ #include "wx/utils.h" #ifndef __DARWIN__ - #include "extldef.h" +// #include "extldef.h" #endif #if !USE_SHARED_LIBRARY @@ -34,6 +34,96 @@ END_EVENT_TABLE() #include "wx/mac/uma.h" + +typedef struct { + unsigned short instruction; + void (*function)(); +} ldefRec, *ldefPtr, **ldefHandle; + +extern "C" +{ +static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect *drawRect, + Cell cell, short dataOffset, short dataLength, + ListHandle listHandle ) ; +} + +static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect *drawRect, + Cell cell, short dataOffset, short dataLength, + ListHandle listHandle ) +{ + FontInfo fontInfo; + GrafPtr savePort; + GrafPtr grafPtr; + RgnHandle savedClipRegion; + SInt32 savedPenMode; + wxListBox* list; + GetPort(&savePort); + SetPort((**listHandle).port); + grafPtr = (**listHandle).port ; + // typecast our refCon + list = (wxListBox*) GetControlReference( (ControlHandle) GetListRefCon(listHandle) ); + + // Calculate the cell rect. + + switch( message ) { + case lInitMsg: + break; + + case lCloseMsg: + break; + + case lDrawMsg: + { + const wxString text = list->m_stringArray[cell.v] ; + + // Save the current clip region, and set the clip region to the area we are about + // to draw. + + savedClipRegion = NewRgn(); + GetClip( savedClipRegion ); + ClipRect( drawRect ); + EraseRect( drawRect ); + + + MoveTo(drawRect->left + 4 , drawRect->top + 10 ); + ::TextFont( kFontIDMonaco ) ; + ::TextSize( 9 ); + ::TextFace( 0 ) ; + + DrawText(text, 0 , text.Length()); + // If the cell is hilited, do the hilite now. Paint the cell contents with the + // appropriate QuickDraw transform mode. + + if( isSelected ) { + savedPenMode = GetPortPenMode( grafPtr ); + SetPortPenMode( grafPtr, hilitetransfermode ); + PaintRect( drawRect ); + SetPortPenMode( grafPtr, savedPenMode ); + } + + // Restore the saved clip region. + + SetClip( savedClipRegion ); + DisposeRgn( savedClipRegion ); + } + break; + case lHiliteMsg: + + // Hilite or unhilite the cell. Paint the cell contents with the + // appropriate QuickDraw transform mode. + + GetPort( &grafPtr ); + savedPenMode = GetPortPenMode( grafPtr ); + SetPortPenMode( grafPtr, hilitetransfermode ); + PaintRect( drawRect ); + SetPortPenMode( grafPtr, savedPenMode ); + break; + default : + break ; + } + SetPort(savePort); +} + extern "C" void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refCon) ; const short kwxMacListWithVerticalScrollbar = 128 ; @@ -49,6 +139,8 @@ wxListBox::wxListBox() m_macList = NULL ; } +static ListDefUPP macListDefUPP = NULL ; + bool wxListBox::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, @@ -65,12 +157,16 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; -#if TARGET_CARBON ListDefSpec listDef; - OptionBits options; + listDef.defType = kListDefUserProcType; + if ( macListDefUPP == NULL ) + { + macListDefUPP = NewListDefUPP( wxMacListDefinition ); + } + listDef.u.userProc = macListDefUPP ; +#if TARGET_CARBON Size asize; - listDef.defType = kListDefStandardTextType; CreateListBoxControl( parent->GetMacRootWindow(), &bounds, false, 0, 1, false, true, 14, 14, false, &listDef, &m_macControl ); @@ -81,7 +177,32 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, SetControlReference(m_macControl, (long) this); SetControlVisibility(m_macControl, false, false); - options = 0; +#else + long result ; + + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , + kwxMacListWithVerticalScrollbar , 0 , 0, + kControlListBoxProc , (long) this ) ; + ::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , + sizeof( ListHandle ) , (char*) &m_macList , &result ) ; + + HLock( (Handle) m_macList ) ; + ldefHandle ldef ; + ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ; + if ( (**m_macList).listDefProc != NULL ) + { + (**ldef).instruction = 0x4EF9; /* JMP instruction */ + (**ldef).function = (void(*)()) listDef.u.userProc; + (**m_macList).listDefProc = (Handle) ldef ; + } + + Point pt = (**m_macList).cellSize ; + pt.v = 14 ; + LCellSize( pt , m_macList ) ; + + LAddColumn( 1 , 0 , m_macList ) ; +#endif + OptionBits options = 0; if ( style & wxLB_MULTIPLE ) { options += lNoExtend ; @@ -95,52 +216,12 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, options = lOnlyOne ; } SetListSelectionFlags(m_macList, options); - -#else - long result ; - - m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , - kwxMacListWithVerticalScrollbar , 0 , 0, - kControlListBoxProc , (long) this ) ; - ::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , - sizeof( ListHandle ) , (char*) &m_macList , &result ) ; - - HLock( (Handle) m_macList ) ; - NewExtLDEFInfo( m_macList , MacDrawStringCell , (long) this ) ; - - (**m_macList).selFlags = 0 ; - if ( style & wxLB_MULTIPLE ) - { - (**m_macList).selFlags += lNoExtend ; - } - else if ( style & wxLB_EXTENDED ) - { - (**m_macList).selFlags += lExtendDrag ; - } - else - { - (**m_macList).selFlags = lOnlyOne ; - } - - Point pt = (**m_macList).cellSize ; - pt.v = 14 ; - LCellSize( pt , m_macList ) ; - - LAddColumn( 1 , 0 , m_macList ) ; - - ControlFontStyleRec controlstyle ; - controlstyle.flags = kControlUseFontMask + kControlUseSizeMask ; - //controlstyle.font = kControlFontSmallSystemFont ; - controlstyle.font = kFontIDMonaco ; - controlstyle.size = 9 ; - //::UMASetControlFontStyle( m_macControl , &controlstyle ) ; -#endif MacPostControlCreate() ; for ( int i = 0 ; i < n ; i++ ) { - Append( choices[i] ) ; + Append( choices[i] ) ; } LSetDrawingMode( true , m_macList ) ; @@ -154,7 +235,8 @@ wxListBox::~wxListBox() if ( m_macList ) { #if !TARGET_CARBON - DisposeExtLDEFInfo( m_macList ) ; + DisposeHandle( (**m_macList).listDefProc ) ; + (**m_macList).listDefProc = NULL ; #endif m_macList = NULL ; } @@ -559,7 +641,7 @@ void wxListBox::MacInsert( int n , const char * text) Cell cell = { 0 , 0 } ; cell.v = n ; LAddRow( 1 , cell.v , m_macList ) ; - LSetCell(text, strlen(text), cell, m_macList); +// LSetCell(text, strlen(text), cell, m_macList); Refresh(); } @@ -568,7 +650,7 @@ void wxListBox::MacAppend( const char * text) Cell cell = { 0 , 0 } ; cell.v = (**m_macList).dataBounds.bottom ; LAddRow( 1 , cell.v , m_macList ) ; - LSetCell(text, strlen(text), cell, m_macList); + // LSetCell(text, strlen(text), cell, m_macList); Refresh(); } @@ -637,7 +719,7 @@ void wxListBox::MacSet( int n , const char * text ) // so we just have to redraw Cell cell = { 0 , 0 } ; cell.v = n ; - LSetCell(text, strlen(text), cell, m_macList); +// LSetCell(text, strlen(text), cell, m_macList); Refresh(); } diff --git a/src/mac/cdef/extcdef.c b/src/mac/cdef/extcdef.c deleted file mode 100644 index 0e21b457a1..0000000000 --- a/src/mac/cdef/extcdef.c +++ /dev/null @@ -1,29 +0,0 @@ -#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 deleted file mode 100644 index 2c7bf88d3b..0000000000 --- a/src/mac/cdef/extcdef.h +++ /dev/null @@ -1,21 +0,0 @@ -#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 deleted file mode 100644 index 4981558381..0000000000 Binary files a/src/mac/cdef/extcdef.mcp and /dev/null differ diff --git a/src/mac/cdef/extcdef6.mcp b/src/mac/cdef/extcdef6.mcp deleted file mode 100644 index 5a6cfa5ed7..0000000000 Binary files a/src/mac/cdef/extcdef6.mcp and /dev/null differ diff --git a/src/mac/corersrc.r b/src/mac/corersrc.r index 0bc5febd8c..4171a8faec 100644 --- a/src/mac/corersrc.r +++ b/src/mac/corersrc.r @@ -391,7 +391,7 @@ resource 'ldes' ( 128 ) 0 , hasVertScroll , noHorizScroll , - 128 , + 0 , noGrowSpace , } } ; diff --git a/src/mac/ldef/extldef.c b/src/mac/ldef/extldef.c deleted file mode 100644 index 8e53fbf046..0000000000 --- a/src/mac/ldef/extldef.c +++ /dev/null @@ -1,91 +0,0 @@ -#include "extldef.h" - -/************************************************************************* - - function prototypes - -*************************************************************************/ - -void DrawMsg(Boolean fSelect, Rect *r, Cell cell, ListHandle lh); -void HiliteMsg(Boolean fSelect, Rect *r); - -/************************************************************************* - - main - -*************************************************************************/ - -pascal void main(short message, Boolean fSelect, Rect *r, Cell cell, - short dataOffset, short dataLen, ListHandle lh) -{ - - switch(message) { - case lInitMsg: - break; - - case lDrawMsg: - DrawMsg(fSelect, r, cell, lh); - break; - - case lHiliteMsg: - HiliteMsg(fSelect, r); - break; - - case lCloseMsg: - break; - - default: - break; - } -} - -/************************************************************************* - - DrawMsg - -*************************************************************************/ - -void DrawMsg(Boolean fSelect, Rect *r, Cell cell, ListHandle lh) -{ - ExtLDEFInfo* info = (ExtLDEFInfo*) (**lh).refCon ; - GrafPtr savePort; - - // set up the port - GetPort(&savePort); - SetPort((**lh).port); - PenNormal(); - ForeColor( blackColor ) ; - BackColor( whiteColor ) ; - - EraseRect(r); - if ( info ) - { - if ( info->drawProc) - { - CallExtLDEFDrawProc(info->drawProc, r, cell, lh, info->refCon ); - } - - } - // hilite if selected - if (fSelect) - HiliteMsg(fSelect, r); - - SetPort(savePort); - -} - -/************************************************************************* - - HiliteMsg - -*************************************************************************/ - -void HiliteMsg(Boolean fSelect, Rect *r) -{ - unsigned char hMode; - - hMode = LMGetHiliteMode(); - BitClr((Ptr)(&hMode),(long)pHiliteBit); - LMSetHiliteMode(hMode); - InvertRect(r); -} diff --git a/src/mac/ldef/extldef.h b/src/mac/ldef/extldef.h deleted file mode 100644 index c678fafe58..0000000000 --- a/src/mac/ldef/extldef.h +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once - -#if defined(__UNIX__) - #include -#else - #include -#endif -#include - -#define kExtLDEFID 128 // resource id of our LDEF resource - -typedef void (*ExtLDEFDrawProcType)(Rect *r, Cell cell, ListHandle lh, long refcon); - -enum { - uppExtLDEFDrawProcInfo = kCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Rect *))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Cell))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(ListHandle))) - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))) -}; - -#if USESROUTINEDESCRIPTORS -typedef UniversalProcPtr ExtLDEFDrawProcUPP; - -#define CallExtLDEFDrawProc(userRoutine, r, cell, lh , refcon ) \ - CallUniversalProc((UniversalProcPtr)(userRoutine), uppExtLDEFDrawProcInfo, r, cell, lh , refcon ) -#define NewExtLDEFDrawProc(userRoutine) \ - (ExtLDEFDrawProcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppExtLDEFDrawProcInfo, GetCurrentISA()) - -#else -typedef ExtLDEFDrawProcType ExtLDEFDrawProcUPP; - -#define CallExtLDEFDrawProc(userRoutine, r, cell, lh , refcon) \ - (*(userRoutine))(r, cell, lh, refcon) -#define NewExtLDEFDrawProc(userRoutine) \ - (ExtLDEFDrawProcUPP)(userRoutine) -#endif - -typedef struct -{ - long refCon ; - ExtLDEFDrawProcUPP drawProc ; -} ExtLDEFInfo ; - -static void NewExtLDEFInfo( ListHandle lh , ExtLDEFDrawProcType drawproc , long refcon ) ; -static void NewExtLDEFInfo( ListHandle lh , ExtLDEFDrawProcType drawproc , long refcon ) -{ - ExtLDEFInfo* info = (ExtLDEFInfo* ) malloc( sizeof( ExtLDEFInfo ) ) ; - info->drawProc = NewExtLDEFDrawProc( drawproc ) ; - info->refCon = refcon ; - (**lh).refCon = (long) info ; -} - -static void DisposeExtLDEFInfo( ListHandle lh) ; -static void DisposeExtLDEFInfo( ListHandle lh) -{ - ExtLDEFInfo* info = (ExtLDEFInfo* ) (**lh).refCon ; - if ( info ) - { - #if !TARGET_CARBON - DisposeRoutineDescriptor( (RoutineDescriptor*) info->drawProc ) ; - #endif - free( (void*) (**lh).refCon ) ; - } -} diff --git a/src/mac/ldef/extldef.mcp b/src/mac/ldef/extldef.mcp deleted file mode 100644 index 458d375486..0000000000 Binary files a/src/mac/ldef/extldef.mcp and /dev/null differ diff --git a/src/mac/ldef/extldef6.mcp b/src/mac/ldef/extldef6.mcp deleted file mode 100644 index bac8c6a5c4..0000000000 Binary files a/src/mac/ldef/extldef6.mcp and /dev/null differ diff --git a/src/mac/listbox.cpp b/src/mac/listbox.cpp index 502394e18a..f6c1403b1c 100644 --- a/src/mac/listbox.cpp +++ b/src/mac/listbox.cpp @@ -21,7 +21,7 @@ #include "wx/utils.h" #ifndef __DARWIN__ - #include "extldef.h" +// #include "extldef.h" #endif #if !USE_SHARED_LIBRARY @@ -34,6 +34,96 @@ END_EVENT_TABLE() #include "wx/mac/uma.h" + +typedef struct { + unsigned short instruction; + void (*function)(); +} ldefRec, *ldefPtr, **ldefHandle; + +extern "C" +{ +static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect *drawRect, + Cell cell, short dataOffset, short dataLength, + ListHandle listHandle ) ; +} + +static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect *drawRect, + Cell cell, short dataOffset, short dataLength, + ListHandle listHandle ) +{ + FontInfo fontInfo; + GrafPtr savePort; + GrafPtr grafPtr; + RgnHandle savedClipRegion; + SInt32 savedPenMode; + wxListBox* list; + GetPort(&savePort); + SetPort((**listHandle).port); + grafPtr = (**listHandle).port ; + // typecast our refCon + list = (wxListBox*) GetControlReference( (ControlHandle) GetListRefCon(listHandle) ); + + // Calculate the cell rect. + + switch( message ) { + case lInitMsg: + break; + + case lCloseMsg: + break; + + case lDrawMsg: + { + const wxString text = list->m_stringArray[cell.v] ; + + // Save the current clip region, and set the clip region to the area we are about + // to draw. + + savedClipRegion = NewRgn(); + GetClip( savedClipRegion ); + ClipRect( drawRect ); + EraseRect( drawRect ); + + + MoveTo(drawRect->left + 4 , drawRect->top + 10 ); + ::TextFont( kFontIDMonaco ) ; + ::TextSize( 9 ); + ::TextFace( 0 ) ; + + DrawText(text, 0 , text.Length()); + // If the cell is hilited, do the hilite now. Paint the cell contents with the + // appropriate QuickDraw transform mode. + + if( isSelected ) { + savedPenMode = GetPortPenMode( grafPtr ); + SetPortPenMode( grafPtr, hilitetransfermode ); + PaintRect( drawRect ); + SetPortPenMode( grafPtr, savedPenMode ); + } + + // Restore the saved clip region. + + SetClip( savedClipRegion ); + DisposeRgn( savedClipRegion ); + } + break; + case lHiliteMsg: + + // Hilite or unhilite the cell. Paint the cell contents with the + // appropriate QuickDraw transform mode. + + GetPort( &grafPtr ); + savedPenMode = GetPortPenMode( grafPtr ); + SetPortPenMode( grafPtr, hilitetransfermode ); + PaintRect( drawRect ); + SetPortPenMode( grafPtr, savedPenMode ); + break; + default : + break ; + } + SetPort(savePort); +} + extern "C" void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refCon) ; const short kwxMacListWithVerticalScrollbar = 128 ; @@ -49,6 +139,8 @@ wxListBox::wxListBox() m_macList = NULL ; } +static ListDefUPP macListDefUPP = NULL ; + bool wxListBox::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, @@ -65,12 +157,16 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; -#if TARGET_CARBON ListDefSpec listDef; - OptionBits options; + listDef.defType = kListDefUserProcType; + if ( macListDefUPP == NULL ) + { + macListDefUPP = NewListDefUPP( wxMacListDefinition ); + } + listDef.u.userProc = macListDefUPP ; +#if TARGET_CARBON Size asize; - listDef.defType = kListDefStandardTextType; CreateListBoxControl( parent->GetMacRootWindow(), &bounds, false, 0, 1, false, true, 14, 14, false, &listDef, &m_macControl ); @@ -81,7 +177,32 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, SetControlReference(m_macControl, (long) this); SetControlVisibility(m_macControl, false, false); - options = 0; +#else + long result ; + + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , + kwxMacListWithVerticalScrollbar , 0 , 0, + kControlListBoxProc , (long) this ) ; + ::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , + sizeof( ListHandle ) , (char*) &m_macList , &result ) ; + + HLock( (Handle) m_macList ) ; + ldefHandle ldef ; + ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ; + if ( (**m_macList).listDefProc != NULL ) + { + (**ldef).instruction = 0x4EF9; /* JMP instruction */ + (**ldef).function = (void(*)()) listDef.u.userProc; + (**m_macList).listDefProc = (Handle) ldef ; + } + + Point pt = (**m_macList).cellSize ; + pt.v = 14 ; + LCellSize( pt , m_macList ) ; + + LAddColumn( 1 , 0 , m_macList ) ; +#endif + OptionBits options = 0; if ( style & wxLB_MULTIPLE ) { options += lNoExtend ; @@ -95,52 +216,12 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, options = lOnlyOne ; } SetListSelectionFlags(m_macList, options); - -#else - long result ; - - m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , - kwxMacListWithVerticalScrollbar , 0 , 0, - kControlListBoxProc , (long) this ) ; - ::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , - sizeof( ListHandle ) , (char*) &m_macList , &result ) ; - - HLock( (Handle) m_macList ) ; - NewExtLDEFInfo( m_macList , MacDrawStringCell , (long) this ) ; - - (**m_macList).selFlags = 0 ; - if ( style & wxLB_MULTIPLE ) - { - (**m_macList).selFlags += lNoExtend ; - } - else if ( style & wxLB_EXTENDED ) - { - (**m_macList).selFlags += lExtendDrag ; - } - else - { - (**m_macList).selFlags = lOnlyOne ; - } - - Point pt = (**m_macList).cellSize ; - pt.v = 14 ; - LCellSize( pt , m_macList ) ; - - LAddColumn( 1 , 0 , m_macList ) ; - - ControlFontStyleRec controlstyle ; - controlstyle.flags = kControlUseFontMask + kControlUseSizeMask ; - //controlstyle.font = kControlFontSmallSystemFont ; - controlstyle.font = kFontIDMonaco ; - controlstyle.size = 9 ; - //::UMASetControlFontStyle( m_macControl , &controlstyle ) ; -#endif MacPostControlCreate() ; for ( int i = 0 ; i < n ; i++ ) { - Append( choices[i] ) ; + Append( choices[i] ) ; } LSetDrawingMode( true , m_macList ) ; @@ -154,7 +235,8 @@ wxListBox::~wxListBox() if ( m_macList ) { #if !TARGET_CARBON - DisposeExtLDEFInfo( m_macList ) ; + DisposeHandle( (**m_macList).listDefProc ) ; + (**m_macList).listDefProc = NULL ; #endif m_macList = NULL ; } @@ -559,7 +641,7 @@ void wxListBox::MacInsert( int n , const char * text) Cell cell = { 0 , 0 } ; cell.v = n ; LAddRow( 1 , cell.v , m_macList ) ; - LSetCell(text, strlen(text), cell, m_macList); +// LSetCell(text, strlen(text), cell, m_macList); Refresh(); } @@ -568,7 +650,7 @@ void wxListBox::MacAppend( const char * text) Cell cell = { 0 , 0 } ; cell.v = (**m_macList).dataBounds.bottom ; LAddRow( 1 , cell.v , m_macList ) ; - LSetCell(text, strlen(text), cell, m_macList); + // LSetCell(text, strlen(text), cell, m_macList); Refresh(); } @@ -637,7 +719,7 @@ void wxListBox::MacSet( int n , const char * text ) // so we just have to redraw Cell cell = { 0 , 0 } ; cell.v = n ; - LSetCell(text, strlen(text), cell, m_macList); +// LSetCell(text, strlen(text), cell, m_macList); Refresh(); }