]> git.saurik.com Git - wxWidgets.git/commitdiff
removed subprojects for ldef and cdef, changed to in-proc ldef
authorStefan Csomor <csomor@advancedconcepts.ch>
Wed, 31 Oct 2001 16:22:33 +0000 (16:22 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Wed, 31 Oct 2001 16:22:33 +0000 (16:22 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

15 files changed:
include/wx/mac/uma.h
src/mac/aga.cpp
src/mac/carbon/aga.cpp
src/mac/carbon/corersrc.r
src/mac/carbon/listbox.cpp
src/mac/cdef/extcdef.c [deleted file]
src/mac/cdef/extcdef.h [deleted file]
src/mac/cdef/extcdef.mcp [deleted file]
src/mac/cdef/extcdef6.mcp [deleted file]
src/mac/corersrc.r
src/mac/ldef/extldef.c [deleted file]
src/mac/ldef/extldef.h [deleted file]
src/mac/ldef/extldef.mcp [deleted file]
src/mac/ldef/extldef6.mcp [deleted file]
src/mac/listbox.cpp

index faf12061586209d153fe63741e13d14daf957355..c0260916c9a2df26b43d73139d30582df1bb8f1d 100644 (file)
@@ -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        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 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 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 ) 
 #endif
 #if TARGET_CARBON
 #define GetWindowUpdateRgn( inWindow , updateRgn ) GetWindowRegion( inWindow , kWindowUpdateRgn, updateRgn ) 
index 76e2d9505b4c76bdc3bbdbb2cb749f7305dcad27..64827558b00742659d8f244a23b72ec7b4690d9d 100644 (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>
 
 pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param);
 #include <PictUtils.h>
 
 pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param);
index 76e2d9505b4c76bdc3bbdbb2cb749f7305dcad27..64827558b00742659d8f244a23b72ec7b4690d9d 100644 (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>
 
 pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param);
 #include <PictUtils.h>
 
 pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param);
index 0bc5febd8c82ea6ce3931b1d4e2a49941b7df93c..4171a8faec9301177d8eb55df0e45cc773e6c89b 100644 (file)
@@ -391,7 +391,7 @@ resource 'ldes' ( 128 )
                0 , 
                hasVertScroll , 
                noHorizScroll , 
                0 , 
                hasVertScroll , 
                noHorizScroll , 
-               128 , 
+               0 , 
                noGrowSpace , 
        }
 } ;
                noGrowSpace , 
        }
 } ;
index 502394e18a7221b6746ea924a98f2a19b84d88fe..f6c1403b1c4c4a9b32e12e48ee6e6ee401133dce 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "wx/utils.h"
 #ifndef __DARWIN__
 
 #include "wx/utils.h"
 #ifndef __DARWIN__
-  #include "extldef.h"
+//  #include "extldef.h"
 #endif
 
 #if !USE_SHARED_LIBRARY
 #endif
 
 #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) ;
 const short kwxMacListWithVerticalScrollbar = 128 ;
 
 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 ;
 }
 
   m_macList = NULL ;
 }
 
+static ListDefUPP macListDefUPP = NULL ;
+
 bool wxListBox::Create(wxWindow *parent, wxWindowID id,
                        const wxPoint& pos,
                        const wxSize& size,
 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 ) ;
 
     
     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,
                           14, 14, false, &listDef, &m_macControl );
 
     CreateListBoxControl( parent->GetMacRootWindow(), &bounds, false, 0, 1, false, true,
                           14, 14, false, &listDef, &m_macControl );
@@ -81,21 +177,6 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
     SetControlReference(m_macControl, (long) this);
     SetControlVisibility(m_macControl, false, false);
 
     SetControlReference(m_macControl, (long) this);
     SetControlVisibility(m_macControl, false, false);
 
-    options = 0;
-    if ( style & wxLB_MULTIPLE )
-    {
-        options += lNoExtend ;
-    }
-    else if ( style & wxLB_EXTENDED )
-    {
-        options += lExtendDrag ;
-    }
-    else
-    {
-        options = lOnlyOne ;
-    }
-    SetListSelectionFlags(m_macList, options);
-
 #else
     long       result ;
 
 #else
     long       result ;
 
@@ -106,41 +187,41 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
                       sizeof( ListHandle ) , (char*) &m_macList  , &result ) ;
 
     HLock( (Handle) m_macList ) ;
                       sizeof( ListHandle ) , (char*) &m_macList  , &result ) ;
 
     HLock( (Handle) m_macList ) ;
-    NewExtLDEFInfo( m_macList , MacDrawStringCell , (long) this ) ;
+    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 ) ;
     
     
-    (**m_macList).selFlags = 0 ;
+    LAddColumn( 1 , 0 , m_macList ) ;
+#endif
+    OptionBits  options = 0;
     if ( style & wxLB_MULTIPLE )
     {
     if ( style & wxLB_MULTIPLE )
     {
-       (**m_macList).selFlags += lNoExtend ;
+        options += lNoExtend ;
     }
     else if ( style & wxLB_EXTENDED )
     {
     }
     else if ( style & wxLB_EXTENDED )
     {
-       (**m_macList).selFlags += lExtendDrag ;
+        options += lExtendDrag ;
     }
     else
     {
     }
     else
     {
-       (**m_macList).selFlags = lOnlyOne ;
+        options = 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
+    SetListSelectionFlags(m_macList, options);
     
     MacPostControlCreate() ;
     
     for ( int i = 0 ; i < n ; i++ )
     {
     
     MacPostControlCreate() ;
     
     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 !TARGET_CARBON
        if ( m_macList )
        {
 #if !TARGET_CARBON
-           DisposeExtLDEFInfo( m_macList ) ;
+      DisposeHandle( (**m_macList).listDefProc ) ;
+      (**m_macList).listDefProc = NULL ;
 #endif
            m_macList = 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 ) ;
     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();
 }
 
     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 ) ;
     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();
 }
 
     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 ;
        // 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();
 }
 
        Refresh();
 }
 
diff --git a/src/mac/cdef/extcdef.c b/src/mac/cdef/extcdef.c
deleted file mode 100644 (file)
index 0e21b45..0000000
+++ /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 (file)
index 2c7bf88..0000000
+++ /dev/null
@@ -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) ;
diff --git a/src/mac/cdef/extcdef.mcp b/src/mac/cdef/extcdef.mcp
deleted file mode 100644 (file)
index 4981558..0000000
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 (file)
index 5a6cfa5..0000000
Binary files a/src/mac/cdef/extcdef6.mcp and /dev/null differ
index 0bc5febd8c82ea6ce3931b1d4e2a49941b7df93c..4171a8faec9301177d8eb55df0e45cc773e6c89b 100644 (file)
@@ -391,7 +391,7 @@ resource 'ldes' ( 128 )
                0 , 
                hasVertScroll , 
                noHorizScroll , 
                0 , 
                hasVertScroll , 
                noHorizScroll , 
-               128 , 
+               0 , 
                noGrowSpace , 
        }
 } ;
                noGrowSpace , 
        }
 } ;
diff --git a/src/mac/ldef/extldef.c b/src/mac/ldef/extldef.c
deleted file mode 100644 (file)
index 8e53fbf..0000000
+++ /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 (file)
index c678faf..0000000
+++ /dev/null
@@ -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 ) ;
-       }
-}
diff --git a/src/mac/ldef/extldef.mcp b/src/mac/ldef/extldef.mcp
deleted file mode 100644 (file)
index 458d375..0000000
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 (file)
index bac8c6a..0000000
Binary files a/src/mac/ldef/extldef6.mcp and /dev/null differ
index 502394e18a7221b6746ea924a98f2a19b84d88fe..f6c1403b1c4c4a9b32e12e48ee6e6ee401133dce 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "wx/utils.h"
 #ifndef __DARWIN__
 
 #include "wx/utils.h"
 #ifndef __DARWIN__
-  #include "extldef.h"
+//  #include "extldef.h"
 #endif
 
 #if !USE_SHARED_LIBRARY
 #endif
 
 #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) ;
 const short kwxMacListWithVerticalScrollbar = 128 ;
 
 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 ;
 }
 
   m_macList = NULL ;
 }
 
+static ListDefUPP macListDefUPP = NULL ;
+
 bool wxListBox::Create(wxWindow *parent, wxWindowID id,
                        const wxPoint& pos,
                        const wxSize& size,
 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 ) ;
 
     
     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,
                           14, 14, false, &listDef, &m_macControl );
 
     CreateListBoxControl( parent->GetMacRootWindow(), &bounds, false, 0, 1, false, true,
                           14, 14, false, &listDef, &m_macControl );
@@ -81,21 +177,6 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
     SetControlReference(m_macControl, (long) this);
     SetControlVisibility(m_macControl, false, false);
 
     SetControlReference(m_macControl, (long) this);
     SetControlVisibility(m_macControl, false, false);
 
-    options = 0;
-    if ( style & wxLB_MULTIPLE )
-    {
-        options += lNoExtend ;
-    }
-    else if ( style & wxLB_EXTENDED )
-    {
-        options += lExtendDrag ;
-    }
-    else
-    {
-        options = lOnlyOne ;
-    }
-    SetListSelectionFlags(m_macList, options);
-
 #else
     long       result ;
 
 #else
     long       result ;
 
@@ -106,41 +187,41 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
                       sizeof( ListHandle ) , (char*) &m_macList  , &result ) ;
 
     HLock( (Handle) m_macList ) ;
                       sizeof( ListHandle ) , (char*) &m_macList  , &result ) ;
 
     HLock( (Handle) m_macList ) ;
-    NewExtLDEFInfo( m_macList , MacDrawStringCell , (long) this ) ;
+    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 ) ;
     
     
-    (**m_macList).selFlags = 0 ;
+    LAddColumn( 1 , 0 , m_macList ) ;
+#endif
+    OptionBits  options = 0;
     if ( style & wxLB_MULTIPLE )
     {
     if ( style & wxLB_MULTIPLE )
     {
-       (**m_macList).selFlags += lNoExtend ;
+        options += lNoExtend ;
     }
     else if ( style & wxLB_EXTENDED )
     {
     }
     else if ( style & wxLB_EXTENDED )
     {
-       (**m_macList).selFlags += lExtendDrag ;
+        options += lExtendDrag ;
     }
     else
     {
     }
     else
     {
-       (**m_macList).selFlags = lOnlyOne ;
+        options = 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
+    SetListSelectionFlags(m_macList, options);
     
     MacPostControlCreate() ;
     
     for ( int i = 0 ; i < n ; i++ )
     {
     
     MacPostControlCreate() ;
     
     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 !TARGET_CARBON
        if ( m_macList )
        {
 #if !TARGET_CARBON
-           DisposeExtLDEFInfo( m_macList ) ;
+      DisposeHandle( (**m_macList).listDefProc ) ;
+      (**m_macList).listDefProc = NULL ;
 #endif
            m_macList = 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 ) ;
     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();
 }
 
     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 ) ;
     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();
 }
 
     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 ;
        // 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();
 }
 
        Refresh();
 }