#include "wx/app.h"
#include "wx/listbox.h"
#include "wx/settings.h"
+#include "wx/toplevel.h"
#include "wx/dynarray.h"
#include "wx/log.h"
#include "wx/utils.h"
-#ifndef __DARWIN__
-// #include "extldef.h"
-#endif
#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl)
#include "wx/mac/uma.h"
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack(2)
+#endif
typedef struct {
unsigned short instruction;
void (*function)();
} ldefRec, *ldefPtr, **ldefHandle;
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack()
+#endif
+
extern "C"
{
static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect *drawRect,
// appropriate QuickDraw transform mode.
if( isSelected ) {
- savedPenMode = GetPortPenMode( grafPtr );
- SetPortPenMode( grafPtr, hilitetransfermode );
+ savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
+ SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect );
- SetPortPenMode( grafPtr, savedPenMode );
+ SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
}
// Restore the saved clip region.
// appropriate QuickDraw transform mode.
GetPort( &grafPtr );
- savedPenMode = GetPortPenMode( grafPtr );
- SetPortPenMode( grafPtr, hilitetransfermode );
+ savedPenMode = GetPortPenMode( (CGrafPtr)grafPtr );
+ SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect );
- SetPortPenMode( grafPtr, savedPenMode );
+ SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
break;
default :
break ;
extern "C" void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refCon) ;
const short kwxMacListWithVerticalScrollbar = 128 ;
+const short kwxMacListItemHeight = 14 ;
// ============================================================================
// list box control implementation
macListDefUPP = NewListDefUPP( wxMacListDefinition );
}
listDef.u.userProc = macListDefUPP ;
+
#if TARGET_CARBON
Size asize;
- CreateListBoxControl( parent->GetMacRootWindow(), &bounds, false, 0, 1, false, true,
- 14, 14, false, &listDef, &m_macControl );
+ CreateListBoxControl( MAC_WXHWND(parent->MacGetRootWindow()), &bounds, false, 0, 1, false, true,
+ kwxMacListItemHeight, kwxMacListItemHeight, false, &listDef, (ControlRef *)&m_macControl );
- GetControlData(m_macControl, kControlNoPart, kControlListBoxListHandleTag,
+ GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag,
sizeof(ListHandle), (Ptr) &m_macList, &asize);
- SetControlReference(m_macControl, (long) this);
- SetControlVisibility(m_macControl, false, false);
+ SetControlReference( (ControlHandle) m_macControl, (long) this);
+ SetControlVisibility( (ControlHandle) m_macControl, false, false);
#else
+
long result ;
- m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false ,
+ m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false ,
kwxMacListWithVerticalScrollbar , 0 , 0,
kControlListBoxProc , (long) this ) ;
- ::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
+ ::GetControlData( (ControlHandle) 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 )
+ if ( (**(ListHandle)m_macList).listDefProc != NULL )
{
(**ldef).instruction = 0x4EF9; /* JMP instruction */
(**ldef).function = (void(*)()) listDef.u.userProc;
- (**m_macList).listDefProc = (Handle) ldef ;
+ (**(ListHandle)m_macList).listDefProc = (Handle) ldef ;
}
- Point pt = (**m_macList).cellSize ;
- pt.v = 14 ;
- LCellSize( pt , m_macList ) ;
-
- LAddColumn( 1 , 0 , m_macList ) ;
+ Point pt = (**(ListHandle)m_macList).cellSize ;
+ pt.v = kwxMacListItemHeight ;
+ LCellSize( pt , (ListHandle)m_macList ) ;
+ LAddColumn( 1 , 0 , (ListHandle)m_macList ) ;
#endif
OptionBits options = 0;
if ( style & wxLB_MULTIPLE )
{
options = lOnlyOne ;
}
- SetListSelectionFlags(m_macList, options);
+ SetListSelectionFlags((ListHandle)m_macList, options);
MacPostControlCreate() ;
Append( choices[i] ) ;
}
- LSetDrawingMode( true , m_macList ) ;
+ LSetDrawingMode( true , (ListHandle)m_macList ) ;
return TRUE;
}
if ( m_macList )
{
#if !TARGET_CARBON
- DisposeHandle( (**m_macList).listDefProc ) ;
- (**m_macList).listDefProc = NULL ;
+ DisposeHandle( (**(ListHandle)m_macList).listDefProc ) ;
+ (**(ListHandle)m_macList).listDefProc = NULL ;
#endif
m_macList = NULL ;
}
wxControl::DoSetSize( x , y , width , height , sizeFlags ) ;
#if TARGET_CARBON
Rect bounds ;
- GetControlBounds( m_macControl , &bounds ) ;
- ControlRef control = GetListVerticalScrollBar( m_macList ) ;
+ GetControlBounds( (ControlHandle) m_macControl , &bounds ) ;
+ ControlRef control = GetListVerticalScrollBar( (ListHandle)m_macList ) ;
if ( control )
{
Rect scrollbounds ;
void wxListBox::SetupColours()
{
- SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW));
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
SetForegroundColour(GetParent()->GetForegroundColour());
}
void wxListBox::Refresh(bool eraseBack, const wxRect *rect)
{
- // Set up port
- WindowRef rootwindow = GetMacRootWindow() ;
- wxWindow* wxrootwindow = wxFindWinFromMacWindow( rootwindow ) ;
- wxMacDrawingHelper focus( wxrootwindow );
-
- UMADrawControl(m_macControl);
+ wxControl::Refresh( eraseBack , rect ) ;
+// MacRedrawControl() ;
}
#if wxUSE_OWNER_DRAWN
void wxListBox::MacDelete( int N )
{
- LDelRow( 1 , N , m_macList) ;
+ LDelRow( 1 , N , (ListHandle)m_macList) ;
Refresh();
}
{
Cell cell = { 0 , 0 } ;
cell.v = n ;
- LAddRow( 1 , cell.v , m_macList ) ;
+ LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList);
Refresh();
}
void wxListBox::MacAppend( const char * text)
{
Cell cell = { 0 , 0 } ;
- cell.v = (**m_macList).dataBounds.bottom ;
- LAddRow( 1 , cell.v , m_macList ) ;
+ cell.v = (**(ListHandle)m_macList).dataBounds.bottom ;
+ LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList);
Refresh();
}
void wxListBox::MacClear()
{
- LDelRow( (**m_macList).dataBounds.bottom , 0 , m_macList ) ;
+ LDelRow( (**(ListHandle)m_macList).dataBounds.bottom , 0 ,(ListHandle) m_macList ) ;
Refresh();
}
Cell cell = { 0 , 0 } ;
if ( ! (m_windowStyle & wxLB_MULTIPLE) )
{
- if ( LGetSelect( true , &cell , m_macList ) )
+ if ( LGetSelect( true , &cell , (ListHandle)m_macList ) )
{
- LSetSelect( false , cell , m_macList ) ;
+ LSetSelect( false , cell , (ListHandle)m_macList ) ;
}
}
cell.v = n ;
- LSetSelect( select , cell , m_macList ) ;
- LAutoScroll( m_macList ) ;
+ LSetSelect( select , cell , (ListHandle)m_macList ) ;
+ LAutoScroll( (ListHandle)m_macList ) ;
Refresh();
}
{
Cell cell = { 0 , 0 } ;
cell.v = n ;
- return LGetSelect( false , &cell , m_macList ) ;
+ return LGetSelect( false , &cell , (ListHandle)m_macList ) ;
}
void wxListBox::MacDestroy()
int wxListBox::MacGetSelection() const
{
Cell cell = { 0 , 0 } ;
- if ( LGetSelect( true , &cell , m_macList ) )
+ if ( LGetSelect( true , &cell , (ListHandle)m_macList ) )
return cell.v ;
else
return -1 ;
Cell cell = { 0 , 0 } ;
cell.v = 0 ;
- while ( LGetSelect( true , &cell , m_macList ) )
+ while ( LGetSelect( true , &cell ,(ListHandle) m_macList ) )
{
aSelections.Add( cell.v ) ;
no_sel++ ;
Point pt;
#if TARGET_CARBON
- GetListCellSize(m_macList, &pt);
+ GetListCellSize((ListHandle)m_macList, &pt);
#else
- pt = (**m_macList).cellSize ;
+ pt = (**(ListHandle)m_macList).cellSize ;
#endif
pt.h = m_width - 15 ;
- LCellSize( pt , m_macList ) ;
+ LCellSize( pt , (ListHandle)m_macList ) ;
}
-void wxListBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
+void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
Boolean wasDoubleClick = false ;
long result ;
- ::GetControlData( m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ;
+ ::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ;
if ( !wasDoubleClick )
{
MacDoClick() ;
void wxListBox::MacSetRedraw( bool doDraw )
{
- LSetDrawingMode( doDraw , m_macList ) ;
+ LSetDrawingMode( doDraw , (ListHandle)m_macList ) ;
}