removed subprojects for ldef and cdef, changed to in-proc ldef

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor 2001-10-31 16:22:33 +00:00
parent bb5f7ca77e
commit e42e45a9dd
15 changed files with 281 additions and 312 deletions

View File

@ -228,12 +228,23 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) ;
#define GetPortVisibleRegion( p, r ) CopyRgn( p->visRgn , r ) #define GetPortVisibleRegion( p, r ) CopyRgn( p->visRgn , r )
#define GetQDGlobalsWhite( a ) (&((*a) = qd.white)) #define GetQDGlobalsWhite( a ) (&((*a) = qd.white))
#define GetQDGlobalsBlack( a ) (&((*a) = qd.black)) #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 GetQDGlobalsArrow( a ) (&((*a) = qd.arrow))
#define GetControlBounds( c , b ) &((*b) = (**c).contrlRect ) #define GetControlBounds( c , b ) &((*b) = (**c).contrlRect )
#define GetPortBitMapForCopyBits( p ) ((BitMap*) &(((CGrafPtr)p)->portPixMap )) #define GetPortBitMapForCopyBits( p ) ((BitMap*) &(((CGrafPtr)p)->portPixMap ))
#define GetControlOwner( control ) (**control).contrlOwner #define GetControlOwner( control ) ((**control).contrlOwner)
#define InvalWindowRgn( window , rgn ) InvalRgn( rgn ) #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 #endif
#if TARGET_CARBON #if TARGET_CARBON
#define GetWindowUpdateRgn( inWindow , updateRgn ) GetWindowRegion( inWindow , kWindowUpdateRgn, updateRgn ) #define GetWindowUpdateRgn( inWindow , updateRgn ) GetWindowRegion( inWindow , kWindowUpdateRgn, updateRgn )

View File

@ -4,7 +4,7 @@
#if 0 // TO BE REMOVED SOON #if 0 // TO BE REMOVED SOON
#include <extcdef.h> //#include <extcdef.h>
#include <PictUtils.h> #include <PictUtils.h>
pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param); pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param);

View File

@ -4,7 +4,7 @@
#if 0 // TO BE REMOVED SOON #if 0 // TO BE REMOVED SOON
#include <extcdef.h> //#include <extcdef.h>
#include <PictUtils.h> #include <PictUtils.h>
pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param); pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param);

View File

@ -391,7 +391,7 @@ resource 'ldes' ( 128 )
0 , 0 ,
hasVertScroll , hasVertScroll ,
noHorizScroll , noHorizScroll ,
128 , 0 ,
noGrowSpace , noGrowSpace ,
} }
} ; } ;

View File

@ -21,7 +21,7 @@
#include "wx/utils.h" #include "wx/utils.h"
#ifndef __DARWIN__ #ifndef __DARWIN__
#include "extldef.h" // #include "extldef.h"
#endif #endif
#if !USE_SHARED_LIBRARY #if !USE_SHARED_LIBRARY
@ -34,6 +34,96 @@ END_EVENT_TABLE()
#include "wx/mac/uma.h" #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) ; extern "C" void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refCon) ;
const short kwxMacListWithVerticalScrollbar = 128 ; const short kwxMacListWithVerticalScrollbar = 128 ;
@ -49,6 +139,8 @@ wxListBox::wxListBox()
m_macList = NULL ; m_macList = NULL ;
} }
static ListDefUPP macListDefUPP = NULL ;
bool wxListBox::Create(wxWindow *parent, wxWindowID id, bool wxListBox::Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, const wxSize& size,
@ -65,12 +157,16 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
#if TARGET_CARBON
ListDefSpec listDef; ListDefSpec listDef;
OptionBits options; listDef.defType = kListDefUserProcType;
if ( macListDefUPP == NULL )
{
macListDefUPP = NewListDefUPP( wxMacListDefinition );
}
listDef.u.userProc = macListDefUPP ;
#if TARGET_CARBON
Size asize; Size asize;
listDef.defType = kListDefStandardTextType;
CreateListBoxControl( parent->GetMacRootWindow(), &bounds, false, 0, 1, false, true, CreateListBoxControl( parent->GetMacRootWindow(), &bounds, false, 0, 1, false, true,
14, 14, false, &listDef, &m_macControl ); 14, 14, false, &listDef, &m_macControl );
@ -81,7 +177,32 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
SetControlReference(m_macControl, (long) this); SetControlReference(m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false); 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 ) if ( style & wxLB_MULTIPLE )
{ {
options += lNoExtend ; options += lNoExtend ;
@ -95,52 +216,12 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
options = lOnlyOne ; options = lOnlyOne ;
} }
SetListSelectionFlags(m_macList, options); 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() ; MacPostControlCreate() ;
for ( int i = 0 ; i < n ; i++ ) for ( int i = 0 ; i < n ; i++ )
{ {
Append( choices[i] ) ; Append( choices[i] ) ;
} }
LSetDrawingMode( true , m_macList ) ; LSetDrawingMode( true , m_macList ) ;
@ -154,7 +235,8 @@ wxListBox::~wxListBox()
if ( m_macList ) if ( m_macList )
{ {
#if !TARGET_CARBON #if !TARGET_CARBON
DisposeExtLDEFInfo( m_macList ) ; DisposeHandle( (**m_macList).listDefProc ) ;
(**m_macList).listDefProc = NULL ;
#endif #endif
m_macList = NULL ; m_macList = NULL ;
} }
@ -559,7 +641,7 @@ void wxListBox::MacInsert( int n , const char * text)
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = n ; cell.v = n ;
LAddRow( 1 , cell.v , m_macList ) ; LAddRow( 1 , cell.v , m_macList ) ;
LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }
@ -568,7 +650,7 @@ void wxListBox::MacAppend( const char * text)
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = (**m_macList).dataBounds.bottom ; cell.v = (**m_macList).dataBounds.bottom ;
LAddRow( 1 , cell.v , m_macList ) ; LAddRow( 1 , cell.v , m_macList ) ;
LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }
@ -637,7 +719,7 @@ void wxListBox::MacSet( int n , const char * text )
// so we just have to redraw // so we just have to redraw
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = n ; cell.v = n ;
LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }

View File

@ -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 */
}

View File

@ -1,21 +0,0 @@
#pragma once
#include <stdlib.h>
#define kExtCDEFID 128 // resource id of our CDEF resource <Controls.h>
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) ;

Binary file not shown.

Binary file not shown.

View File

@ -391,7 +391,7 @@ resource 'ldes' ( 128 )
0 , 0 ,
hasVertScroll , hasVertScroll ,
noHorizScroll , noHorizScroll ,
128 , 0 ,
noGrowSpace , noGrowSpace ,
} }
} ; } ;

View File

@ -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);
}

View File

@ -1,65 +0,0 @@
#pragma once
#if defined(__UNIX__)
#include <Carbon/Carbon.h>
#else
#include <Lists.h>
#endif
#include <stdlib.h>
#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 ) ;
}
}

Binary file not shown.

Binary file not shown.

View File

@ -21,7 +21,7 @@
#include "wx/utils.h" #include "wx/utils.h"
#ifndef __DARWIN__ #ifndef __DARWIN__
#include "extldef.h" // #include "extldef.h"
#endif #endif
#if !USE_SHARED_LIBRARY #if !USE_SHARED_LIBRARY
@ -34,6 +34,96 @@ END_EVENT_TABLE()
#include "wx/mac/uma.h" #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) ; extern "C" void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refCon) ;
const short kwxMacListWithVerticalScrollbar = 128 ; const short kwxMacListWithVerticalScrollbar = 128 ;
@ -49,6 +139,8 @@ wxListBox::wxListBox()
m_macList = NULL ; m_macList = NULL ;
} }
static ListDefUPP macListDefUPP = NULL ;
bool wxListBox::Create(wxWindow *parent, wxWindowID id, bool wxListBox::Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, const wxSize& size,
@ -65,12 +157,16 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
#if TARGET_CARBON
ListDefSpec listDef; ListDefSpec listDef;
OptionBits options; listDef.defType = kListDefUserProcType;
if ( macListDefUPP == NULL )
{
macListDefUPP = NewListDefUPP( wxMacListDefinition );
}
listDef.u.userProc = macListDefUPP ;
#if TARGET_CARBON
Size asize; Size asize;
listDef.defType = kListDefStandardTextType;
CreateListBoxControl( parent->GetMacRootWindow(), &bounds, false, 0, 1, false, true, CreateListBoxControl( parent->GetMacRootWindow(), &bounds, false, 0, 1, false, true,
14, 14, false, &listDef, &m_macControl ); 14, 14, false, &listDef, &m_macControl );
@ -81,7 +177,32 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
SetControlReference(m_macControl, (long) this); SetControlReference(m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false); 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 ) if ( style & wxLB_MULTIPLE )
{ {
options += lNoExtend ; options += lNoExtend ;
@ -95,52 +216,12 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
options = lOnlyOne ; options = lOnlyOne ;
} }
SetListSelectionFlags(m_macList, options); 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() ; MacPostControlCreate() ;
for ( int i = 0 ; i < n ; i++ ) for ( int i = 0 ; i < n ; i++ )
{ {
Append( choices[i] ) ; Append( choices[i] ) ;
} }
LSetDrawingMode( true , m_macList ) ; LSetDrawingMode( true , m_macList ) ;
@ -154,7 +235,8 @@ wxListBox::~wxListBox()
if ( m_macList ) if ( m_macList )
{ {
#if !TARGET_CARBON #if !TARGET_CARBON
DisposeExtLDEFInfo( m_macList ) ; DisposeHandle( (**m_macList).listDefProc ) ;
(**m_macList).listDefProc = NULL ;
#endif #endif
m_macList = NULL ; m_macList = NULL ;
} }
@ -559,7 +641,7 @@ void wxListBox::MacInsert( int n , const char * text)
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = n ; cell.v = n ;
LAddRow( 1 , cell.v , m_macList ) ; LAddRow( 1 , cell.v , m_macList ) ;
LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }
@ -568,7 +650,7 @@ void wxListBox::MacAppend( const char * text)
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = (**m_macList).dataBounds.bottom ; cell.v = (**m_macList).dataBounds.bottom ;
LAddRow( 1 , cell.v , m_macList ) ; LAddRow( 1 , cell.v , m_macList ) ;
LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }
@ -637,7 +719,7 @@ void wxListBox::MacSet( int n , const char * text )
// so we just have to redraw // so we just have to redraw
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = n ; cell.v = n ;
LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }